【问题标题】:Strcmp Problem Segmantation Fault insert method not workingstrcmp 问题分段错误插入方法不起作用
【发布时间】:2020-07-30 02:48:31
【问题描述】:

我使用了 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:没有这样的文件或目录。

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

【问题讨论】:

    标签: c string gcc methods segmentation-fault


    【解决方案1】:

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

    切换到

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多