int main(int argc, char *argv[])で、実行時に文字列を2つ読み取り、最初に入力された文字列に後から入力された文字列が含まれるかどうかをチェックするプログラムの書き方がわからないので教えて下さい。配列くらいまでしかやってないです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
lang
1#include <stdio.h> 2#include <string.h> 3 4int main(int argc, char *argv[]) { 5 6 if (argc != 3) { 7 printf("# エラー: 2 つの文字列を指定してください。\n"); 8 return -1; 9 } 10 const char * s1 = argv[1]; 11 const char * s2 = argv[2]; 12 13 // これは チェックしなくてもよいかもしれない 14 if (strlen(s2) == 0) { 15 printf("# エラー: 2 番目の文字列の長さが 0 です。\n"); 16 return -1; 17 } 18 19 if (strstr(s1, s2) != NULL) { 20 printf("[%s] は [%s] を含んでいます。\n", s1, s2); 21 } else { 22 printf("[%s] は [%s] を含んでいません。\n", s1, s2); 23 } 24 return 0; 25}
投稿2015/04/30 21:47
総合スコア22324
0
strstr関数を使うと楽ですよ。
投稿2015/04/30 06:35
総合スコア7
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
lang
1#include <stdio.h> 2 3int main(int argc, char *argv[]) 4{ 5 char *s = argv[1], *t = argv[2]; 6 int p = 0, i; 7 8 for (i = 0; s[i] != '\0'; i++) 9 { 10 if (s[i] == t[p]) { 11 p += 1; 12 } else if (s[i] == t[0]) { 13 p = 1; 14 } else { 15 p = 0; 16 } 17 if (t[p] == '\0') { 18 printf("含まれます\n"); 19 return 0; 20 } 21 } 22 23 printf("含まれません\n"); 24 return 0; 25}
投稿2015/04/27 19:35
編集2015/04/27 20:20総合スコア140
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
実行時に文字列を2つ読み取り
これが、引数に2つの文字列を与えるという意味ならば、最初の文字列はargv[1]
、2番目の文字列はargv[2]
で参照できます。この場合、argc
が3以上(引数が2個以上を意味する)であることを確認しておく必要があります。
文字列に文字列が含まれるかどうかは、strstr
関数を使います。
実行時に文字列を2つ読み取り
が、プログラム起動後に端末などから文字列をEnterキーで入力すると言うことなら、それにはfgets
関数を使います。
投稿2015/04/27 13:01
総合スコア84538
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/27 13:06
2015/04/27 13:45
0
“実行時に文字列を2つ読み取り”というのはファイルから読み込むのでしょうか?
それとも、実行時引数…int main(int argc, char argv[])のargv[]なのでしょうか?
・・・コマンドがtest1だとすると >test1 abc defg とやって実行すると
argv[1]→"abc"、 argv[2]→"defg" となりますが?
投稿2015/04/27 12:58
総合スコア6851
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/27 12:59
2015/04/27 13:13
2015/04/27 13:32
2015/04/27 13:33
2015/04/27 22:43
2015/04/27 22:51
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。