- ベストアンサー
C言語で文字列内に指定の文字列が含まれているかを検索するプログラム
- C言語で文字列内に指定の文字列が含まれているかを検索するプログラムを作成する方法を教えてください。
- ユーザが入力した文字列が3文字未満の場合は、指定の文字列が含まれていないと表示させるようにしたいです。
- 指定の文字列が連続している場合にのみ検索結果が1を返し、それ以外の場合は0を返す関数を完成させたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
strstr()を使えば、猫にも解けそうなのでstr_srch_abc()で、strstr()を使わない方法を挙げて置きます。 -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- int str_srch_abc(char str[]) { char *p; p = str; if (p[0] == 0 || p[1] == 0 || p[2] == 0) { return 0; } while (1) { if (p[0] == 'a' && p[1] == 'b' && p[2] == 'c') { return (1); } if (p[3] == 0) { return (1); } else { p++; } } }
その他の回答 (2)
- mac_res
- ベストアンサー率36% (568/1571)
システムとコンパイラが記されていませんが、Ctl-Zを終端にしているところからWindowsと仮定して取り扱います。 -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- 8< -- #include <stdio.h> #include <string.h> int str_srch_abc(char str[]) { if (strstr(str, "abc") == NULL) { return (0); } return (1); } int main(void) { char buf[1001]; while (1) { printf("半角英数字を入力してください"); if (fgets(buf, 1001, stdin) == 0) { return (0); } if (str_srch_abc(buf) == 0) { printf("abcがありません\n"); } else { printf("abcを見つけました\n"); } } return 0; }
- asuncion
- ベストアンサー率33% (2127/6289)
> 文字列strの中にabcが含まれていれば、1を返し、含まれていなければ0を返す 文字列関連の標準関数を使ってはいけない、という制限がありますか?
補足
できれば文字列関連の標準関数を使わないでやりたいのですが可能ですか?
お礼
参考にさせてもらいますね。