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";
...
然后传递那些(可修改的)数组。
我使用了 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";
...
然后传递那些(可修改的)数组。