我正在尝试通过删除C中字符串中的空格来编写程序。我尝试使用gdb
进行调试,但我想我在使用该工具时并不是很了解。我的代码如下:
#include<stdio.h>
void RemoveSpaces(char * str){
char *var1, *var2;
var1 = str; var2 = str;
while(*var1 != '\0'){
if(*var1 != ' '){
*var2 = *var1;
var2++;
}
var1++;
}
*var2 = '\0';
}
int main(){
char *str = "abc de";
printf("Before: %s\n", str);
RemoveSpaces(str);
printf("After: %s\n", str);
return 0;
}
我试着在var1和var2上设置监视,但是我在编写自己的*var2 = *var1;
之前找到了*i = *j++;
我想找到一些代码here的SIGSEGV。当然,答案表明它未经测试,但我在我得到错误的行上做了类似的声明。为什么*var2 = *var1;
在{{1}}会发生错误({1}}时会出错? (我不希望有人删除我的错误。我只是想知道为什么我可能会收到此错误,以便将来可以避免它。)
答案 0 :(得分:1)
您无法修改字符串文字 - 更改:
char *str = "abc de";
为:
char str[] = "abc de";