为什么在阅读一个单词后出现分词错误?如何使用strtok将用户输入的单词分隔符分隔为空格
如果我输入“这是为什么不行”
我只拿回
为什么
,然后我得到一个分段错误。
我见过其他的例子,但没有使用用户输入,我想在这里做。我只能读一个字,它不会工作。我尝试将%c全部更改为%s,但它不能帮助我。我也意识到分段错误是指向不在内存中的某个地方的指针,但我看不出它有什么问题。请帮助我理解。
#include <stdio.h>
#include <string.h>
int main()
{
char word[100];
printf("Enter a sentence: ");
scanf("%s", word);
char *tok = strtok(word, " ");
printf("%s\n", tok);
while(tok != NULL)
{
tok = strtok(NULL, " ");
printf("%s\n", tok);
if(tok == NULL)
printf("finished\n");
}
return 0;
}
编辑:我改变了scanf(“%s”,单词); fgets(单词,100,stdin);现在它可以打印所有内容,但是出现分段错误。
'scanf(“%s”,单词);''不会在word中保存空格,只保存'why'。使用'fgets()'。 – chux
@chux thanks dude我把它改成fgets(word,100,stdin),但我仍然遇到了段错误。 – Anonymous
提示:为什么代码执行'printf(“%s \ n”,tok);'和_then_检查if'(tok == NULL)...'? – chux