【发布时间】:2017-07-14 22:06:16
【问题描述】:
这个函数用了好几次就报了一个奇怪的错误,实在是搞不懂是什么原因。
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返回的
【问题讨论】:
-
malloc(sizeof(str));为最多 7 个字符的字符串保留足够的内存。您可能应该将其更改为malloc(strlen(str)+1);。 -
1)
sizeof(str)是指针 (char *) 大小。 2)_res不会以空值终止。 -
@squeamishossifrage 虽然纠正了它的误导性。你不说为什么 7.(或 3)。我知道为什么,但我不得不考虑一下。
-
听起来你想返回一个子字符串。请参阅this,它可能会有所帮助。
标签: c