1. ホーム
  2. c

[解決済み】C言語で文字列を正しく比較するには?

2022-04-08 13:15:21

質問

あるプログラムに、ユーザーが単語や文字を入力し、それを記憶し、ユーザーが再び入力し、プログラムを終了するまでそれを表示するようにしようとしています。私のコードは次のようなものです。

#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);   /* obsolete function: do not use!! */
    printf("I will now repeat this until you type it back to me.\n");

    while (check != input)
    {
        printf("%s\n", input);
        gets(check);   /* obsolete function: do not use!! */
    }

    printf("Good bye!");
    

    return 0;
}

問題は、ユーザーによる入力(check)がオリジナル(input)と一致しても、入力文字列の印刷が行われ続けることです。この2つの比較は間違っているのでしょうか?

解決方法を教えてください。

を使用して文字列を比較することは(有益には)できません。 != または == を使用する必要があります。 strcmp :

while (strcmp(check,input) != 0)

その理由は、以下の通りです。 !=== は、それらの文字列のベースアドレスのみを比較します。文字列の内容そのものを比較するのではありません。