C语言中的strtok()函数

strtok() 函数是 C 标准库 <string.h> 头文件的一部分,用于将字符串分割成一个个标记(token)。

语法
#include <string.h>
char* strtok(char* string, const char* delimiter);
  • string:要分割的输入字符串。
  • delimiter:分隔符字符串。

strtok() 函数将根据分隔符字符将输入字符串分割成标记。每次调用 strtok(input, delimiter) 函数时,它将返回第一个标记。要获取后续的标记,需要在随后的调用中将输入字符串设置为 NULL,直到函数返回 NULL

使用方法

我们通常会不断调用 strtok(NULL, delimiter) 直到它返回 NULL

示例

以下是一个使用 strtok() 函数的 C 程序示例:

#include <stdio.h>
#include <string.h>

int main() {
   char input_string[] = "Hello Tutorials Point!";
   char token_list[20][20]; // 用于存储分割出的子字符串
   char* token = strtok(input_string, " ");
   int num_tokens = 0; // 用于记录分割出的子字符串数量

   while (token != NULL) {
      strcpy(token_list[num_tokens], token); // 将子字符串复制到列表中
      num_tokens++;
      token = strtok(NULL, " "); // 获取下一个标记
   }

   // 打印子字符串列表
   printf("Token List:\n");
   for (int i = 0; i < num_tokens; i++) {
      printf("%s\n", token_list[i]);
   }
   return 0;
}
输出

当执行上述程序时,会产生如下结果:

Token List:
Hello
Tutorials
Point!

详细解释

  1. 包含头文件

    #include <stdio.h>
    #include <string.h>
    

    包含标准输入输出和字符串操作的头文件。

  2. 定义输入字符串和存储子字符串的数组

    char input_string[] = "Hello Tutorials Point!";
    char token_list[20][20]; // 用于存储分割出的子字符串
    

    input_string 是要分割的字符串,token_list 用于存储分割出的子字符串。

  3. 调用 strtok() 并初始化第一个标记

    char* token = strtok(input_string, " ");
    

    使用空格作为分隔符,将 input_string 分割成第一个标记。

  4. 循环分割字符串并存储子字符串

    int num_tokens = 0; // 用于记录分割出的子字符串数量
    
    while (token != NULL) {
       strcpy(token_list[num_tokens], token); // 将子字符串复制到列表中
       num_tokens++;
       token = strtok(NULL, " "); // 获取下一个标记
    }
    

    使用 strtok() 分割字符串,并将每个子字符串复制到 token_list 数组中。每次调用 strtok(NULL, " ") 获取下一个标记,直到返回 NULL

  5. 打印子字符串列表

    printf("Token List:\n");
    for (int i = 0; i < num_tokens; i++) {
       printf("%s\n", token_list[i]);
    }
    

    遍历 token_list 数组并打印所有子字符串。

通过这个示例,可以看到 strtok() 函数如何将字符串分割成多个标记。每次调用 strtok() 时,它都会返回下一个标记,直到没有更多标记为止。这使得 strtok() 函数非常适合用于解析和处理字符串。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新华

感谢打赏,我会继续努力原创。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值