为什么strtok只打印第一个字?

Pep*_*per 3 c string split scanf strtok

我正在使用strtok将字符串转换为单个单词.我做了以下事情:

int main() {
  char target[100];
  char *t;
  scanf("%s",target);
  t = strtok(target," ");
  while (t!= NULL)
  {
    printf("<<%s>>\n", t);
    t = strtok (NULL, " ");
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输入是一个字符串,例如'this is a string',我得到的输出是<<this>>.

Moh*_*han 6

你写scanf它的方式只接受字符串直到空格

的scanf( "%S",目标);

所以你需要改变从控制台获取输入的方式

scanf("%99[^\n]",target);
Run Code Online (Sandbox Code Playgroud)