strcmp Problem Segmentation Fault 插入方法不起作用

Strcmp Problem Segmantation Fault insert method not working

我使用了 GDB,发现问题出在这行代码上:

主要内容:

'''

    else if(strcmp("insert",arg[1])==0){
    insert("a.txt","Cem","Mec","Cem","-a");

}

''' 插入方法:

'''

void insert(char *filename, char *insertedWord, char *searchedWord,char *oldsearchedWord, char *ab){

if(strcmp("-a",ab) == 0){

    strcat(searchedWord," ");
    strcat(searchedWord, insertedWord);
    replace(filename,searchedWord,oldsearchedWord); 

}
else if(strcmp("-b",ab) == 0){

    strcat(insertedWord," ");
    strcat(insertedWord, searchedWord);
    replace(filename,insertedWord,oldsearchedWord);

}

} '''

错误是:

程序接收到信号 SIGSEGV,分段错误。 __strcmp_sse2_unaligned () 在 ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S:32 32 ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: 没有那个文件或目录。

我检查了我的替换方法。有效。

您正在尝试 strcat 使用字符串文字作为目标。你不能这样做,因为字符串文字通常放在只读数据段上,试图修改它们是未定义的行为。

切换到

char insertedWord[256] = "cem";
char searchedWord[256] = "mec";
...

然后传递那些(可修改的)数组。