爲什麼在遇到行return str + i - j;
時,此程序會導致分段錯誤?我以爲我很瞭解指針的概念,但我顯然在這裏錯過了一些東西,我無法弄清楚。返回字符時出現分段錯誤*
#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'的值是什麼以及它們是如何改變的。 –