2017-02-16 42 views
1

我有使用getchar()和文件重定向比較問題。比較getchar與一個字符返回一個警告,並給我錯誤的代碼

我有一個類似這樣的代碼:

char result = getchar(); // getchar returns the next char in the file 
int linecount = 0; 

if (result == "\n") { 
    linecount++; 
} 

但在編譯時,我得到一個警告。它說,我不能比較一個int與指針,但從我的理解,結果是一個字符,所以是「\ n」,所以我很困惑。我也可以使用printf(「%c」,result),它工作正常,暗示結果是一個char。有人知道我爲什麼會得到這個錯誤嗎?謝謝!另外,運行代碼,linecount將始終返回0即使我用作輸入文件中的第一個字符是換行符

+3

'「\ n」' - >''\ n''。期。 –

+2

呵呵,還有'char result' - >'int result' –

+1

確實'getchar'返回'int',你分配給'char',然後和'char *'比較。 –

回答

0

您正在比較charchar *,即字符串。「」(雙引號)值被視爲C中的字符串,所以你的代碼應該是

if (result == '\n') { 
    linecount++; 
} 

或者,你可以使用strcmpstrncmp與澆鑄爲指針的字符,但是這是沒有必要的。

請注意char的大小小於int,所以從char到int的轉換不會讓你失去任何東西。

+1

_或者,您可以使用strcmp或strncmp將char轉換爲pointer_,而不是真的,NUL終止符在哪裏? –

+0

好的,非常感謝!我從來不知道「」和「之間的區別,所以這非常有幫助! – Keeyan

相關問題