我对C很新,所以如果这是一个愚蠢的问题我会道歉。我收到了一个分段错误,当我运行gdb时,我没有得到一个行号来说明导致错误的原因,就像我通常那样。相反,我得到的结论是:
find_any_ptr()中的0x00000000004012ff
我正在编写一个方法来返回指向给定stop
中string
中任何字符第一次出现的指针,如果NULL
不包含string
,则返回char *find_any_ptr(char *string, char* stop){
char* ch1 = string;
char* ch2 = stop;
int retComp = strlen(string);
char* retChar;
while(*ch2 != '\0'){
int temp = 0;
while(*ch1 != '\0'){
if(*ch2 == *ch1){
if(temp < retComp){
*retChar = ch1;
retComp = temp;
}
}
temp++;
ch1++;
}
ch2++;
}
if(retComp == strlen(string)){
return NULL; //NULL has been defined elsewhere
}else{
return retChar;
}
}
任何人物。
insert
如果有人知道潜在问题在哪里,我将非常感谢您的帮助。 :)谢谢!
答案 0 :(得分:1)
将*retChar = ch1;
更改为retChar = ch1;
即。当你的retChar
指针没有被初始化为某个东西时你正在取消引用它,你可能只是希望它指定ch1
指针的值(该地址不是它指向的char)。
答案 1 :(得分:0)
以下声明:
*retChar = ch1;
导致分段错误,因为您尝试取消引用未初始化的指针;要避免这种情况,您应该将该语句更改为:
retChar = ch1;
此语句将ch1
的地址存储在retChar
中,而不是存储在char
中的ch1
值;这可能是你想要做的。