grep関数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
初心者

grep関数

#1

投稿記事 by 初心者 » 9年前

C言語でgrep関数と同じ動作をするプログラムを作る宿題が出たのですが、
なかなかうまくできません。またポインタを使用するものとする

何回も作り直したのですが、うまくいかずに困り果てています。
自分の力だけで解決したかったのですが、提出期限が今日です。

どなたかご教授ください。

アバター
パコネコ
記事: 139
登録日時: 9年前
住所: 大阪

Re: grep関数

#2

投稿記事 by パコネコ » 9年前

なんどか作り直しているとのことですので、コードを張っていただけると、アドバイスをもらいやすいですよ。
ニャン!!\(゜ロ\)(/ロ゜)/

初心者

Re: grep関数

#3

投稿記事 by 初心者 » 9年前

ソースを張らせていただきます。
アドバイスいただけると光栄です。

#include <stdio.h>
#include <stdlib.h>
#define MAX 20

int main()
{
char str1[MAX], str2[MAX];
char *p1, *p2;
char count = 0, d = 0;
char i_temp = 0,d_temp,first_count = 0;
char i_max = 0;

p1 = str1;
p2 = str2;

printf("Input str1 <");
scanf("%s",str1);
printf("Input str2 <");
scanf("%s",str2);

for (; str2[i_max] != '\0'; i_max++)
;

while (1){
while (*(p2 + i) != *(p1 + d))
d++;

if (*(p2 + i) == *(p1 + d)){
i_temp = i;
first_count = i;
d_temp = d;
for (; i_temp < i_max || *(p2 + i_temp) == *(p1 + d_temp); i_temp++){
d_temp++;
i_temp++;


if (*(p2 + i_temp) == '\0'){
printf("%d",first_count);
exit(1);
}

}
}

i++;
}

if (*(p2 + i_temp) != '\0'){
printf("0");
exit(1);
}


return 0;
}

アバター
bitter_fox
記事: 607
登録日時: 9年前
住所: 大阪府

Re: grep関数

#4

投稿記事 by bitter_fox » 9年前

初心者 さんが書きました:C言語でgrep関数と同じ動作をするプログラムを作る宿題が出たのですが、
grep関数って何でしょう?
仕様がはっきりしないと答えようがないので、どういう入力の時にどういう出力をするのかを教えてくれますか?

non
記事: 1097
登録日時: 9年前

Re: grep関数

#5

投稿記事 by non » 9年前

上に貼り付けられたプログラムを読んでみると、とてもgrepと同じコマンドだとは思えません。bitter_foxさんがお尋ねのように別にgrep関数ってのがあるのでしょうか。読んだ感じでは、str1の文字列にstr2の文字列があるか検索し、見つかった場所の文字位置を返す関数のようですが。strstr関数の間違いではないでしょうか。
non

閉鎖

“C言語何でも質問掲示板” へ戻る