【发布时间】:2015-03-14 18:19:15
【问题描述】:
我想用空格分割我的 char 字符串,这是我的代码。(参考其他人)
void main() {
char origin_str[] = "How are you";
int n_segs = Words_counts(origin_str);
char **split_array = malloc(n_segs * sizeof(char*));
split_array = split_str_to_array(origin_str);
..... //do something
free(split_array);
}
还有 split_str_to_array 函数:
char **split_str_to_array(const char strr[]) {
char **res = NULL;
char * p = strtok(strr, " ");
int n_spaces = 0;
while (p) {
res = realloc(res, sizeof(char*) * ++n_spaces);
if (res == NULL)
exit(-1);
res[n_spaces - 1] = p;
p = strtok(NULL, " ");
}
res = realloc(res, sizeof(char*) * (n_spaces + 1));
res[n_spaces] = 0;
return res;
}
效果很好,但我对从 split_str_to_array 函数获取字符数组的用法感到困惑。
我应该在 split 函数中使用 free(res) 吗?如果是,我如何返回 char 数组?声明一个已知长度的新节点返回?
我担心内存使用拆分功能出现问题。或者,有更好的方法来做同样的事情?
非常感谢您的帮助。
【问题讨论】:
标签: c memory split heap-memory dynamic-memory-allocation