【发布时间】:2016-02-21 16:03:08
【问题描述】:
(我是c语言新手)
我试图从一个函数返回一个指针,我收到segment fault 错误。我知道这通常是因为运行循环不必要的时间或试图访问内存中不必要的位置。我昨晚和今天早上都花了整整,但仍然无法弄清楚我犯的愚蠢错误。
这是我正在尝试获取指针的函数
char *mySubStr(char *find, char *search){
char *p, *q, *i;
int count;
p = find;
q = search;
int size = strlen(q);
char *start = malloc ( size + 1 );
for (i=p; i != '\0'; i++){
if (i == q){
count = 0;
start = i;
while(i == q){
i++; count++; q++;
if(count == size) return start;
}
q = search;
}
}
return NULL;
}
这就是我的main 函数,
int main(){
int dump;
char str1[100], str2[100], *start;
printf("Enter 1st String: ");
scanf("%[^\n]s", str1);
dump = getchar();
printf("Enter 2nd String: ");
scanf("%[^\n]s", str2);
dump = getchar();
*start = *mySubStr(str1, str2);
printf("start: %s\n", start);
}
我确信我像往常一样犯了一些愚蠢的错误,这并不奇怪。
谢谢!
【问题讨论】:
-
Perhas
i != '\0'-->*i != '\0'?请不要写i++; count++; q++;之类的东西,如果你写i++; count++; i++;那是正确的,但如果你快速查看它,它看起来像未定义的行为。 -
不,仍然出现同样的错误:/
-
*start = *mySubStr(str1, str2);→start = mySubStr(str1, str2);。另外,在打印之前,男性肯定start不是NULL。别忘了free它。 -
@CoolGuy,解决了谢谢 :) 但为什么它总是返回
NULL而不是start? -
您的代码中还有很多其他问题...您要达到什么目的?而
mySubStr需要返回什么?
标签: c pointers function-pointers