明明没有任何逻辑错误,却编译报错signal: segmentation fault (core dumped),而且在调试的时候数据就是写不进内存,循环在第一遍就崩溃了,故立此文做研究记录:
代码:
#include<stdio.h>
char *_suffix(char str[],int m){
int len=0;
for(;str[len]!='\0';len++){}
//获取字符串总长度(避免使用其他封装函数,自行设计时可以使用strlen替代)
printf("%d\n",len-m);
int pos=0,i;
char *backup;
for(i=len-m ;i<len ;i++){
backup[pos++] = str[i];
printf("%c %d %d ",str[i],i,pos);
}
backup[pos]='\0';
return backup;
}
int main(){
char *str = "Hello My DotCpp.com";
char *newstr = _suffix(str,5);
printf("%s",newstr);
return 0;
}
报错内容为backup[pos++] = str[i]
但是修复核心为char *backup;
修改为 char backup[500];
这样的方法就可以了。
0 条评论