如何使用strtok函数在C语言中分割字符串?

strtok函数用于将字符串分割成一系列标记,通过指定的分隔符。它修改原始字符串并返回指向第一个标记的指针,后续调用继续从上次位置开始。

在C语言编程中,字符串处理是一个常见的任务,而strtok 函数是标准库中用于分割字符串的一个非常有用的工具,本文将详细介绍strtok 函数的用法、工作原理以及一些注意事项。

`strtok` 函数简介

strtok函数

strtok 函数用于将一个字符串分解为一系列标记(token),每个标记由指定的分隔符分隔,该函数定义在<string.h> 头文件中。

函数原型

char *strtok(char *str, const char *delim);

参数说明

str:指向要分割的字符串,如果是第一次调用strtok,则传入要分割的字符串;如果后续调用strtok 以继续分割同一个字符串,则传入NULL

delim:包含分隔符的字符串,可以是多个字符,例如" ,;" 表示空格、逗号和分号都是分隔符。

返回值

如果成功,返回指向下一个标记的指针。

strtok函数

如果失败,返回NULL

使用示例

以下是一个简单的示例程序,演示如何使用strtok 函数来分割字符串:

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "Hello, world! This is a test.";
    char delim[] = " ,!"; // 分隔符包括空格、逗号和感叹号
    // 获取第一个标记
    char *token = strtok(str, delim);
    // 循环获取剩余的标记
    while (token != NULL) {
        printf("Token: %s
", token);
        token = strtok(NULL, delim); // 注意这里传入NULL
    }
    return 0;
}

运行上述代码,输出将是:

Token: Hello
Token: world
Token: This
Token: is
Token: a
Token: test

`strtok` 的工作原理

strtok 函数通过修改原始字符串来工作,它会将分隔符替换为空字符(即'