2016-02-10 81 views
-1
char *word[128]; 
fgets(word, 128, stdin); 
if(word == "hello") 
    printf("You entered hello as your word."); 

所以基本上我試圖讓用戶輸入一個字符串,然後用下面的對比如此看如果字符串輸入的用戶等於「你好」。但是,編譯此代碼時,它不起作用。我做錯了什麼?C瞭解行字符串

編輯:因此,基於反饋到目前爲止,這是我所:

char word[128]; 
fgets(word, 128, stdin); 
if(strcmp(word, "Hello") == 0) 
    printf("match\n"); 

然而,當我編譯並運行此程序,並輸入Hello它不打印「匹配」。

+3

'=='不是在C中完成字符串比較。使用['strcmp'](http://linux.die.net/man/3/strcmp)。 – kaylum

+5

[如何正確比較C中的字符串?](https://stackoverflow.com/questions/8004237/how-do-i-properly-compare-strings-in-c) – kaylum

+0

如果您學習如何* hard-代碼*和*打印*字符串,您可以分開這兩個函數(獲取用戶輸入和比較字符串)並獨立解決它們。 – Beta

回答

0

使用strcmp(char *s1, char *s2)來比較字符串。 也將char *word更改爲char word[]

fgets,當你使用它,讀取來自stdin字符,直到已經閱讀新線,字符或EOF(文件結束)。 新行是在word中讀取的字符串的一部分,所以比較是不相等的。

爲了說明,您需要知道C風格字符串是由特殊轉義字符\0結尾的字符數組。所以你比較那兩個字符串hello\n\0hello\0;請注意從stdin中讀取的字符串中的換行符。

您可以用\0覆蓋第012位的\n,這樣您的字符串就會相等。
更好的一般解決方案是簡單地迭代字符串的字符並將\n替換爲\0;也許這對你來說可能是一個很好的練習。

==不按您期望的方式比較字符串。它只是比較兩個對象的地址,在這種情況下當然是不同的。

0

您需要使用strcmp來比較字符串。

if(strcmp(word, "Hello") == 0) 
    printf("match\n");