如何正確比較字符串?我試圖讓一個程序讓用戶輸入一個單詞或字符,存儲它,然后打印它直到用戶再次鍵入它,退出程序。我的代碼看起來像這樣:#include <stdio.h>int main(){
char input[40];
char check[40];
int i=0;
printf("Hello!\nPlease enter a word or character:\n");
gets(input);
printf("I will now repeat this until you type it back to me.\n");
while (check != input)
{
printf("%s\n", input);
gets(check);
}
printf("Good bye!");
return 0;}問題是我不斷打印輸入字符串,即使用戶輸入(檢查)與原始(輸入)匹配。我比較錯誤嗎?
3 回答

繁星coding
TA貢獻1797條經驗 獲得超4個贊
您不能(有用)使用!=
或比較字符串==
,您需要使用strcmp
:
while (strcmp(check,input) != 0)
這樣做的原因是因為!=
并且==
只會比較這些字符串的基址。不是字符串本身的內容。

慕容森
TA貢獻1853條經驗 獲得超18個贊
好的一些事情:gets
不安全,應該更換,fgets(input, sizeof(input), stdin)
以免你得到緩沖區(qū)溢出。
接下來,要比較字符串,必須使用strcmp
,其中返回值為0表示兩個字符串匹配。使用相等運算符(即。!=
)比較兩個字符串的地址,而不是它們中的個別字符串char
。
并且還要注意,雖然在這個例子中它不會引起問題,也可以fgets
將換行符存儲'\n'
在緩沖區(qū)中; gets()
才不是。如果您將用戶輸入與fgets()
字符串文字進行比較,例如"abc"
它永遠不會匹配(除非緩沖區(qū)太小,以至于它'\n'
不適合它)。
編輯:再次被超級快速的神秘主義者擊敗。
- 3 回答
- 0 關注
- 1064 瀏覽
添加回答
舉報
0/150
提交
取消