我是C的新手,所以如果这是一个愚蠢的问题,我深表歉意。我会遇到细分故障,当我运行GDB时,我没有得到一条线号来演示造成我平常的故障的原因。相反,我得到的是:
0x00000000004012ff在find_any_ptr()
我正在写一种方法,将指针返回给定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 != ' '){
int temp = 0;
while(*ch1 != ' '){
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;
}
}
如果有人看到基本问题在哪里,我将非常感谢您的帮助。:)谢谢!
将*retChar = ch1;
更改为retChar = ch1;
IE。当retChar
指针未初始化到某些内容时,您可能会在CC_7指针中提取它,并且您可能只希望它分配ch1
指针的值(地址而非其指向的字符)。
以下语句:
*retChar = ch1;
会导致分割故障,因为您试图放弃一个非初始化的指针;为了避免这种情况,您应该将该语句更改为:
retChar = ch1;
此语句将ch1
的地址存储在stop
0中,而不是存储在ch1
中的char
值;这可能是您要做的。