【发布时间】:2018-12-23 09:34:52
【问题描述】:
我必须得到字符串中的第三个单词并想使用 strtok。现在,第一个 printf 工作,但之后我得到一个 Seg Fault。所以tokenizedString = strtok(NULL, " "); 一定是导致问题的原因,对吧?
只是为了上下文:我正在寻找字符串中的第三个单词,单词之间可以有尽可能多的空格。
#include <string.h>
#include <stdio.h>
char *tokenizeString(char *userCommand)
{
char *tokenizedString;
int counterForToken;
tokenizedString = strtok(userCommand, " ");
for(counterForToken = 0; counterForToken != 3; counterForToken++)
{
printf("%s\n", tokenizedString);
tokenizedString = strtok(NULL, " ");
if(tokenizedString == NULL)
{
break;
}
}
printf("%s\n", tokenizedString);
return tokenizedString;
}
int main(void)
{
char userCommand[255] = {0};
fgets(userCommand, sizeof(userCommand), stdin);
tokenizeString(userCommand);
}
【问题讨论】:
-
在致电
tokenizeString之前怀疑您的问题出在userCommand。 -
我用
tokenizeString(userCommand);调用我的函数 -
userCommand传递了什么? -
@StoryTeller 我得到
UserCommand就像这样:char userCommand[255]; fgets(userCommand, sizeof(userCommand), stdin); -
@MaximilianWolf 正如 StoryTeller 所说,请发帖 minimal reproducible example