我无法理解函数中的错误

时间:2017-07-14 22:06:16

标签: c

这个功能在使用几次后会产生一个奇怪的错误,我真的无法理解它背后的原因。

    char *get_range(char *str,int min,int max){
    char *_res=(char *)malloc(sizeof(str));
    int cur=0;
    while (min<max){
        _res[cur]=str[min];
        min++;
        cur++;
        }
    return _res;
    }

问题是,在多次使用此功能后,输出会带有额外的字符,我不明白为什么。

注意:函数beffor

返回的其他字符总是使用

1 个答案:

答案 0 :(得分:2)

  char *_res=(char *)malloc(sizeof(str));

错了。 sizeof(str)正在测量char指针的大小。这可能是4或8(通常),具体取决于您的系统(32位或64位)。

你需要

char *_res=(char *)malloc(strlen(str) + 1);

strlen返回字符串中的字符数,您需要为终止0添加1;

第二,你必须在结尾添加一个终止零,执行:

_res[cur] = '\0'; 

返回之前