我有一個的strcmp函數像這樣:strcmp不工作?
if (strcmp(userInput, "Yes") == 0)
出於某種原因,它不會if語句進入,儘管我相信肯定userinput等於是。任何人有任何線索最新錯誤?
我有一個的strcmp函數像這樣:strcmp不工作?
if (strcmp(userInput, "Yes") == 0)
出於某種原因,它不會if語句進入,儘管我相信肯定userinput等於是。任何人有任何線索最新錯誤?
爲了避免troube有拖尾斷行,你也許可以只檢查前3個字符:
if(strncmp(userInput, "Yes", 3) == 0)
如果輸入是「YesASDASD」? –
那麼,這將匹配太多,但取決於用例可能已經足夠了 – rekire
它適用於我在strcmp沒有工作的地方,我想這是因爲一個字符串長度沒有明確定義。 –
<string.h>
。userInput
得到fgets()
,確保在最後沒有行終止,它會干擾這樣寫的比較。因爲你的代碼沒問題。這不是問題。
我懷疑你這樣做:
fgets(userInput, sizeof(userInput), stdin);
if(strcmp(userInput, "Yes") == 0)
這是給你換行字符:
['Y']['e']['s']['\n']
您可以修復任何數量的方式:
if(strcmp(userInput, "Yes\n") == 0)
可能是最簡單的。或者你可以通過scaf得到輸入:
scanf("%s", userInput);
如果你需要幫助,你可以輸入。
//I am assuming usrInput is a char Array
string str(usrInput);
//string class has a constructor that takes a NULL-terminated C-string
if (str == "Yes")
{
//do what ever you wanted to in the loop
}
This在C中不會成功 – chux
如何輸入'userInput'? –
您可能從'fgets'獲得了您的用戶輸入,這會導致附加新行。 –
你是如何得到'usrInput'的,那是什麼類型?需要更多信息 – Mike