C-我的分割故障在哪里发生



我是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的地址存储在stop0中,而不是存储在ch1中的char值;这可能是您要做的。

相关内容

  • 没有找到相关文章