を返す際のセグメンテーションフォールトreturn str + i - j;
に遭遇したときに、このプログラムでセグメンテーションフォルトが発生するのはなぜですか?私はポインタのコンセプトをよく理解していると思っていましたが、ここでは何かが間違っていると思います。char *
#include <stdio.h>
char* ft_strstr(char* str, char* to_find)
{
int i;
int j;
i = 0;
while (str[i] != '\0')
{
j = 0;
while (str[i] == to_find[j] && str[i] != '\0' && to_find[j] != '\0')
{
i++;
j++;
}
if (to_find[j] == '\0')
return str + i - j;
else
i = i - j;
i++;
}
return (0);
}
int main()
{
char a[] = "fffo";
char b[] = "ffo";
char* f = ft_strstr(a,b);
if (f)
printf("%s\n", f);
return (0);
}
そこに 'return 0'がありませんか?それは魚のように見える... –
GCCコンパイラでは、あなたのプログラムは正常に動作しています.. –
@cuvidk:私はそれを今テストすることはできませんが、現在のコードはよく見えます。あなたはそれをデバッグし、 'i'と' j'の値とそれらがどのように変化するのか見ることができます。 –