ページ 11

grep関数

Posted: 2011年5月18日(水) 18:09
by 初心者
C言語でgrep関数と同じ動作をするプログラムを作る宿題が出たのですが、
なかなかうまくできません。またポインタを使用するものとする

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

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

Re: grep関数

Posted: 2011年5月18日(水) 21:56
by パコネコ
なんどか作り直しているとのことですので、コードを張っていただけると、アドバイスをもらいやすいですよ。

Re: grep関数

Posted: 2011年5月18日(水) 22:13
by 初心者
ソースを張らせていただきます。
アドバイスいただけると光栄です。

#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;
}

Re: grep関数

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

Re: grep関数

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