簡體   English   中英

我的細分錯誤在哪里發生?

[英]Where is my segmentation fault occuring?

我對C很陌生,因此如果這是一個愚蠢的問題,我深表歉意。 我遇到了分段錯誤,當我運行gdb時,我沒有得到行號來像平時一樣說明引起該錯誤的原因。 相反,我得到了一些類似的東西:

find_any_ptr中的0x00000000004012ff()

我正在編寫一種方法,以將指針返回給定stringstop中任何字符的第一個匹配項;如果string不包含任何string ,則返回NULL

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;
    }
}

如果有人看到根本問題在哪里,我將非常感謝您的幫助。 :) 謝謝!

更改*retChar = ch1; retChar = ch1; 即。 您在未將retChar指針初始化為某種東西時取消引用,而您可能只是希望它分配ch1指針的值(地址而不是它指向的char)。

以下語句:

*retChar = ch1;

導致分段錯誤,因為您試圖取消引用未初始化的指針; 為了避免這種情況,您應該將該語句更改為:

retChar = ch1;

該語句將ch1的地址存儲在retChar ,而不是存儲在ch1char值中; 這可能是您要執行的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM