だから私はこれを持っています(完全なコードではありません)
char list[1000][10];
strcpy(list[0],"ab");
printf("%d\n",strcmp(list[0],"ab"));
strcmp は 0 を返しています。誰かがなぜそうしているのか説明できますか?
前もって感謝します。
だから私はこれを持っています(完全なコードではありません)
char list[1000][10];
strcpy(list[0],"ab");
printf("%d\n",strcmp(list[0],"ab"));
strcmp は 0 を返しています。誰かがなぜそうしているのか説明できますか?
前もって感謝します。
この場合、「ab」が含まれているstrcmp
場合、メソッドは 0 を返します。list[0]
戻り値:
文字列間の関係を示す整数値を返します。
ゼロ値は、両方の文字列が等しいことを示します。
ゼロより大きい値は、一致しない最初の文字の値が str2 よりも str1 の方が大きいことを示します。ゼロ未満の値はその反対を示します。
strcmp()
等値テストではなく、文字列の序数比較を行います。戻り値 0 は、文字列が等しいことを意味します!
等しいかどうかをテストする場合は、次のパターンを使用します。
if (strcmp(s, "ab") == 0) {
// strings are equal
}
なぜならstrcpy()
、「右」の文字列を「左」の文字列にコピーする関数だからです。したがって、 の後strcpy(list[0],"ab");
の内容list[0]
は「ab」です。次に、それらは等しい文字列であり、strcmp は「等しい」を意味する 0 を返します。
あなたの文字列が一致するため、0を返すのはこのようにする...
char list[1000][10];
strcpy(list[0],"ab");
if(strcmp(list[0],"ab")==0)
printf("Matched\n",);
ダニエルが述べたように、戻り値は 0 です。
cplusplus.comから取得
文字列間の関係を示す整数値を返します。ゼロ値は、両方の文字列で比較された文字が同じ文字列を形成していることを示します。ゼロより大きい値は、一致しない最初の文字の値が str2 よりも str1 の方が大きいことを示します。ゼロ未満の値はその反対を示します。
strncmp
また、ではなく を使用する必要がありstrcmp
ます。
strmp
文字列が一致する場合は 0 を返します。何かが欠けていない限り、期待どおりに動作しています。