明明没有任何逻辑错误,却编译报错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 条评论