私はstrcmp関数を持っています:
if (strcmp(userInput, "Yes") == 0)
何らかの理由で、userinputが間違いなくYesに等しいと確信していても、ifステートメントは入力されません。誰かが何が悪いのか手がかりがありますか?
<string.h>
。userInput
たとえば から取得している場合はfgets()
、最後に行終端がないことを確認してください。そのように記述された比較に干渉します。末尾の改行でトラブルを避けるために、最初の 3 文字だけをチェックすることができます。
if(strncmp(userInput, "Yes", 3) == 0)
そのままで、あなたのコードは問題ありません。それは問題ではありません。
私はあなたがこれをしていると思う:
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
}