1

だから私はこれを持っています(完全なコードではありません)

char list[1000][10];

strcpy(list[0],"ab");

printf("%d\n",strcmp(list[0],"ab"));

strcmp は 0 を返しています。誰かがなぜそうしているのか説明できますか?

前もって感謝します。

4

6 に答える 6

6

この場合、「ab」が含まれているstrcmp場合、メソッドは 0 を返します。list[0]

戻り値:

文字列間の関係を示す整数値を返します。

ゼロ値は、両方の文字列が等しいことを示します。

ゼロより大きい値は、一致しない最初の文字の値が str2 よりも str1 の方が大きいことを示します。ゼロ未満の値はその反対を示しま​​す。

于 2013-08-23T21:46:57.457 に答える
0

strcmp()等値テストではなく、文字列の序数比較を行います。戻り値 0 は、文字列が等しいことを意味します!

等しいかどうかをテストする場合は、次のパターンを使用します。

if (strcmp(s, "ab") == 0) {
    // strings are equal
}
于 2013-08-23T21:48:30.583 に答える
0

なぜならstrcpy()、「右」の文字列を「左」の文字列にコピーする関数だからです。したがって、 の後strcpy(list[0],"ab");の内容list[0]は「ab」です。次に、それらは等しい文字列であり、strcmp は「等しい」を意味する 0 を返します。

于 2013-08-23T21:49:06.310 に答える
0

あなたの文字列が一致するため、0を返すのはこのようにする...

    char list[1000][10];

    strcpy(list[0],"ab");
    if(strcmp(list[0],"ab")==0)
         printf("Matched\n",);
于 2013-08-23T21:49:36.027 に答える
0

ダニエルが述べたように、戻り値は 0 です。

cplusplus.comから取得

文字列間の関係を示す整数値を返します。ゼロ値は、両方の文字列で比較された文字が同じ文字列を形成していることを示します。ゼロより大きい値は、一致しない最初の文字の値が str2 よりも str1 の方が大きいことを示します。ゼロ未満の値はその反対を示しま​​す。

strncmpまた、ではなく を使用する必要がありstrcmpます。

于 2013-08-23T21:49:44.563 に答える
0

strmp文字列が一致する場合は 0 を返します。何かが欠けていない限り、期待どおりに動作しています。

参照: http://www.tutorialspoint.com/ansi_c/c_strcmp.htm

于 2013-08-23T21:47:02.283 に答える