明明没有任何逻辑错误,却编译报错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]; 这样的方法就可以了。

分类: C

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注