タグ付けされた質問 「strcmp」

8
文字列を適切に比較するにはどうすればよいですか?
ユーザーが単語や文字を入力して保存し、ユーザーがもう一度入力してプログラムを終了するまで印刷できるプログラムを取得しようとしています。私のコードは次のようになります: #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); printf("I will now repeat this until you type it back to me.\n"); while (check != input) { printf("%s\n", input); gets(check); } printf("Good bye!"); return 0; } 問題は、ユーザーによる入力(チェック)が元の(入力)と一致する場合でも、入力文字列の印刷を取得し続けることです。2つを誤って比較していますか?
182 c  string  strcmp 


4
strcasecmpアルゴリズムに欠陥がありますか?
私はstrcasecmpCで関数を再実装しようとしていますが、比較プロセスで矛盾しているように見えるものに気づきました。 から man strcmp strcmp()関数は、2つの文字列s1とs2を比較します。ロケールは考慮されません(ロケール対応の比較については、strcoll(3)を参照)。s1がそれぞれs2より小さい、一致する、またはs2より大きい場合、ゼロより小さい、等しい、またはゼロより大きい整数を返します。 から man strcasecmp strcasecmp()関数は、文字の大文字と小文字を無視して、文字列s1とs2のバイト単位の比較を実行します。s1がそれぞれs2より小さい、一致する、またはs2より大きい場合、ゼロより小さい、等しい、またはゼロより大きい整数を返します。 int strcmp(const char *s1, const char *s2); int strcasecmp(const char *s1, const char *s2); この情報を考えると、次のコードの結果は理解できません。 #include <stdio.h> #include <string.h> int main() { // ASCII values // 'A' = 65 // '_' = 95 // 'a' = 97 printf("%i\n", strcmp("A", "_")); printf("%i\n", …
34 c  strcmp 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.