【发布时间】:2017-07-31 09:37:50
【问题描述】:
我在处理 char* 数组中的 char* 时遇到了一些问题,并将其用作参考:Splitting C char array into words
所以我想要做的是读取 char 数组并用空格分隔符将它们拆分,这样我就可以用它做一些事情了。例如,如果我的 char* 中的第一个标记是“Dog”,我会将其发送到处理狗的不同函数。我的问题是我得到了一个奇怪的输出。
例如:
输入:*cmd = "狗需要预约兽医。"
输出:(来自打印语句)“完成了兽医检查。”
我已经使用 valgrind 检查了内存泄漏,但没有发现任何错误或其他错误。
void parseCmd(char* cmd){ //passing in an individual char* from a char**
char** p_args = calloc(100, sizeof(char*));
int i = 0;
char* token;
token = strtok(cmd, " ");
while (token != NULL){
p_args[i++] = token;
printf("%s",token); //trying to debug
token = strtok(NULL, cmd);
}
free(p_args);
}
有什么建议吗?我是 C 的新手,所以如果我做了一些愚蠢的事情,请多多包涵。谢谢。
【问题讨论】:
-
我不明白:如果你不保存你得到的指针列表,为什么要
calloc(3)它们然后释放......为什么使用p_args数组,分配给它,然后终于free(3)了吗? -
我将 p_args 传递到不同的函数中,我只是还没有添加该代码并抢先放入免费的。我只是想让 strtok 先正常工作。
-
哦.... 抱歉当时的评论。
-
np 我应该澄清一下