【发布时间】:2015-11-13 20:10:10
【问题描述】:
void replace(char *str) {
unsigned int len = 0;
unsigned int no_of_spaces = 0;
while (*str) {
if ((char)*str == SPACE)
no_of_spaces++;
str++;
len++;
}
unsigned int new_len = len + 2 * no_of_spaces;
str = (char*) realloc(str, new_len * sizeof(char));
str[new_len] = '\0';
}
我使用像replace("random string");这样的函数。
这里我试图增加字符串的大小,以便可以用另一个字符串替换空格。为此,我需要计算空格的数量并获取原始字符串的长度。我已经做到了。
为了调整大小,我使用的是realloc,但是当我运行它时,它会给出Aborted (core dumped)?
【问题讨论】:
-
realloc 如果调用失败返回NULL,你应该检查一下.....
-
显示你如何调用
replace以及你将ass参数传递给replace。 -
我在下面的 cmets 中提到过。就像
replace("random string")。
标签: c memory-management realloc