这个功能在使用几次后会产生一个奇怪的错误,我真的无法理解它背后的原因。
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
返回的其他字符总是使用答案 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';
返回之前