请给我解释一下strtok()函数的工作原理.手册上说它把字符串分解成记号.我无法从手册中理解它的实际功能.

我在str*pch上添加了手表,以判断其工作情况.当第一个while循环发生时,str的内容仅为"this".下面显示的输出是如何打印在屏幕上的?

/* strtok example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-");
  }
  return 0;
}

Output:

Splitting string "- This, a sample string." into tokens:
This
a
sample
string

推荐答案

strtok()将字符串划分为标记.即从任何一个分隔符开始到下一个分隔符将是您的一个令牌.在您的示例中,起始令牌将从"-"开始,并以下一个空格""结束.则下一个令牌将从""开始,以","结束.在这里,您将获得"this"作为输出.类似地,字符串的睡觉从空格到空格被拆分成记号,最后一个记号"结束于".

C++相关问答推荐

Apple Libm的罪恶功能

为什么getchar()挂起了,尽管poll()返回了一个好的值?""

C指针地址和转换

C中出现分段错误后关闭文件

不会停在空格或换行符上的错误

ATmega328P EEPROM未写入

如何将长字符串转换为较小的缩写,该缩写由第一个字符、最后一个字符和中间的字符数组成?

在我的代码中,我需要在哪里编写输出函数?

如何在C中打印包含扫描字符和整数的语句?

整型文字后缀在左移中的用途

<;unistd.h>;和<;sys/unistd.h>;之间有什么区别?

如何在C++中安全地进行浮点运算

将 struct 数组写入二进制文件时发生Valgrind错误

为什么二进制文件的大小不会随着静态数据的大小而增加?

可以对两种 struct 类型中的任何一种进行操作的C函数

我错误地修复了一个错误,想了解原因

我的代码可以与一个编译器一起使用,但不能与其他编译器一起使用

程序打印一些随机空行

一元运算符

UEFI 应用程序中的计时器回调仅在 AMI BIOS 中挂起