1 :
七七四:
テスト(c言語)で「ある文字列tの中に別の文字列sが含まれているかを調べて、t中のsの出現位置を整数型配列nに格納し、sの出現回数を関数strchknum(t,s,n)を作成せよ。」という問題が出たのですがよくわからなかったので誰か教えてください。
はいはい、罵倒レスをする方はこちらですよ〜
ここは過保護なインターネッツですね。
test
6 :
デフォルトの名無しさん:2005/08/06(土) 07:43:58
とっとこはしるよハム太郎
簡単にバッファオーヴァフローしそうな仕様だな。
それが教師クオリティー
>>1 できたよ〜
#define N_MAX 100
char *check(char *t,char *s)
{
if(!*s) return t;
if(!*t) return NULL;
if(*t != *s) return NULL;
{
char *p;
if(p = check(t+1,s+1)) --p;
return p;
}
}
int loop(char *t, char *p, char *s, int *n, int cnt)
{
if( *p && cnt < N_MAX )
{
char *ret = check(p,s);
if(ret) n[cnt++] = ret - t;
return loop(t, p+1, s, n, cnt);
}
return cnt;
}
int strchknum(char *t,char *s, int *n)
{
return loop(t, t, s, n, 0);
}
ちょっと整理したよ〜
#define N_MAX 100
char *check(char *t,char *s)
{
if(!*s) return t;
if(*t && *t==*s && check(t+1,s+1)) return t;
return NULL;
}
int loop(char *t, char index, char *s, int *n, int cnt)
{
if( t[index] && cnt < N_MAX )
{
char *ret = check(t+index,s);
if(ret) n[cnt++] = ret - t;
return loop(t, index+1, s, n, cnt);
}
return cnt;
}
int strchknum(char *t,char *s, int *n)
{
return loop(t, 0, s, n, 0);
}
index は char じゃなくintの方がいいかな。意味的に。