凡人@sos さんが書きました:こちらの場合、const char という形に直さなければならないのでしょうか?
こちらとは、どちらでしょうか?
int result(const char *s1, const char *s2) は、
int result(char *s1, char *s2) でも構いません。
それとも、引数なしの result() がダメかという質問ですか?
もちろん、引数なしにもできます。それは、No.5 の Mathさんの
プログラムなどを参考に、あなたにやってもらいたかったのです。
s1 を test2 に、s2 を test1 に置き換えるだけです。
コード:
int result(void)
{
int i, j;
for (i = 0; test2[i]; i++)
for (j = 0; ; j++) {
if (test1[j] == '\0') return i;
if (test1[j] != test2[i+j]) break;
}
return -1;
}
もちろん、呼出しの i = result(test2, test1); を i = result(); に変えます。
凡人@sos さんが書きました:
又、int main (void){
の文中で、forループを回して表示させる方法が、やはり思いつきませんが、
たとえば、どのように定義することが出来ればよいのでしょうか?
質問の意味がよくわかりません。
main を次のようにしたいということですか?
コード:
int main(void)
{
int i, k;
printf("test2: %s\n", test2);
for (k = 1; k <= 5; k++) {
printf("[%d] 文字入力せよ:\n", k);
scanf("%s", test1);
i = result(test2, test1);
if (i >= 0)
printf("'%s' starts at test2[%d]\n", test1, i);
else
printf("'%s' not found\n", test1);
}
return 0;
}
実行結果
コード:
test2: sos filenonfile
[1] 文字入力せよ:
sos
'sos' starts at test2[0]
[2] 文字入力せよ:
file
'file' starts at test2[4]
[3] 文字入力せよ:
non
'non' starts at test2[8]
[4] 文字入力せよ:
nf
'nf' starts at test2[10]
[5] 文字入力せよ:
os
'os' starts at test2[1]
他の回答者のアドバイスも参考に、例えば strstr() を使った
プログラムなどにもチャレンジしてください。