-3

私はstrcmp関数を持っています:

if (strcmp(userInput, "Yes") == 0)

何らかの理由で、userinputが間違いなくYesに等しいと確信していても、ifステートメントは入力されません。誰かが何が悪いのか手がかりがありますか?

4

4 に答える 4

3
  1. 適切なヘッダーを含めていることを確認してください<string.h>
  2. userInputたとえば から取得している場合はfgets()、最後に行終端がないことを確認してください。そのように記述された比較に干渉します。
于 2012-12-11T18:33:50.647 に答える
2

末尾の改行でトラブルを避けるために、最初の 3 文字だけをチェックすることができます。

if(strncmp(userInput, "Yes", 3) == 0)
于 2012-12-11T18:31:36.840 に答える
1

そのままで、あなたのコードは問題ありません。それは問題ではありません。

私はあなたがこれをしていると思う:

fgets(userInput, sizeof(userInput), stdin);
if(strcmp(userInput, "Yes") == 0)

これはあなたに改行文字を与えています:

['Y']['e']['s']['\n']

いくつかの方法で修正できます。

if(strcmp(userInput, "Yes\n") == 0)

おそらく最も簡単です。または、scaf 経由で入力を取得することもできます。

scanf("%s", userInput);
于 2012-12-11T18:36:28.333 に答える
0

助けが必要な場合は、タイプキャストできます。

//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
}
于 2012-12-11T18:54:21.023 に答える