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!
详细解释
-
包含头文件:
#include <stdio.h> #include <string.h>
包含标准输入输出和字符串操作的头文件。
-
定义输入字符串和存储子字符串的数组:
char input_string[] = "Hello Tutorials Point!"; char token_list[20][20]; // 用于存储分割出的子字符串
input_string
是要分割的字符串,token_list
用于存储分割出的子字符串。 -
调用
strtok()
并初始化第一个标记:char* token = strtok(input_string, " ");
使用空格作为分隔符,将
input_string
分割成第一个标记。 -
循环分割字符串并存储子字符串:
int num_tokens = 0; // 用于记录分割出的子字符串数量 while (token != NULL) { strcpy(token_list[num_tokens], token); // 将子字符串复制到列表中 num_tokens++; token = strtok(NULL, " "); // 获取下一个标记 }
使用
strtok()
分割字符串,并将每个子字符串复制到token_list
数组中。每次调用strtok(NULL, " ")
获取下一个标记,直到返回NULL
。 -
打印子字符串列表:
printf("Token List:\n"); for (int i = 0; i < num_tokens; i++) { printf("%s\n", token_list[i]); }
遍历
token_list
数组并打印所有子字符串。
通过这个示例,可以看到 strtok()
函数如何将字符串分割成多个标记。每次调用 strtok()
时,它都会返回下一个标记,直到没有更多标记为止。这使得 strtok()
函数非常适合用于解析和处理字符串。