• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:abcが、入力された文字列内にあるかどうかを表示するプログラム)

C言語で文字列内に指定の文字列が含まれているかを検索するプログラム

このQ&Aのポイント
  • C言語で文字列内に指定の文字列が含まれているかを検索するプログラムを作成する方法を教えてください。
  • ユーザが入力した文字列が3文字未満の場合は、指定の文字列が含まれていないと表示させるようにしたいです。
  • 指定の文字列が連続している場合にのみ検索結果が1を返し、それ以外の場合は0を返す関数を完成させたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.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++; } } }

bad-pc
質問者

お礼

参考にさせてもらいますね。

その他の回答 (2)

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.2

システムとコンパイラが記されていませんが、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)
回答No.1

> 文字列strの中にabcが含まれていれば、1を返し、含まれていなければ0を返す 文字列関連の標準関数を使ってはいけない、という制限がありますか?

bad-pc
質問者

補足

できれば文字列関連の標準関数を使わないでやりたいのですが可能ですか?