gpt4 book ai didi

c - 用 strtok 分隔字符串

转载 作者:行者123 更新时间:2023-11-30 15:41:55 25 4
gpt4 key购买 nike

我正在寻找将一行(作为一个字符串给出)分成单词。例如:“ Hello World ”。我可以在单词和开头之间有一个或多个制表符或空格。我正在尝试做这样的事情:(findCommand 是一个函数,line 是我作为输入获得的字符串,对于这部分我只需要前 2 个单词)

CommandResult findCommand (const char* line){
char* commandLine = malloc(strlen(line)+1);
strcpy(commandLine, line);
char space[] = " \t";
char* word1 = strtok(commandLine,space);
char* word2 = strtok(NULL,space);

我尝试在 Eclipse 中使用不同的空格和制表符来运行它。其中一些工作正常,而另一些则出现了分割错误,但我不明白为什么。

最佳答案

这个:

char* commandLine = malloc(sizeof(strlen(line)));

是错误的。您不应在此处使用 sizeof,并且当然也不应在调用 strlen() 的结果上使用。上面的内容等同于:

char *commandLine = malloc(sizeof (size_t));

因为strlen()的返回类型是size_t。因此,实际的 strlen() 返回值将被忽略。

正确的代码是:

char *commandLine = malloc(strlen(line) + 1);

因为必须为终止符添加 1,而该终止符不包含在 strlen() 返回的长度中。

这里不需要任何sizeof,因为很明显你正在处理字符。

关于c - 用 strtok 分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20395916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com