1. 简介
在C语言中,字符串的处理是非常重要的工作。strtok函数是专门用来分解字符串的函数之一。它可以将一个字符串分解成多个子字符串,分隔符可以是空格、制表符、换行符等。strtok函数属于C标准库函数的一种,头文件为string.h,并且在编写字符串分隔代码时被广泛使用。
2. 函数原型
char *strtok(char *str, const char *delim);
说明:str代表需要被分解的字符串,delim表示分隔符字符串。strtok函数每次被调用后会将str指向的字符串中第一个分隔符之前的字符串返回,并将指针指向下一个分隔符,用NULL表示没有更多的分隔符。因此,将str指向NULL,再次调用strtok函数时就可以继续分隔字符串。
3. 实例演示
3.1 简单分隔字符串
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, world! Welcome to my blog.";
char *delim = ",! ";
char *token;
token = strtok(str, delim);
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, delim);
}
return 0;
}
代码解析:
在上面的代码中,首先声明了一个字符串str和一个分隔符delim,然后使用strtok函数分隔字符串。程序的输出结果如下:
Hello
world
Welcome
to
my
blog.
程序调用strtok函数,每次分隔字符串后携带一个NULL参数,在while循环中继续分隔,直到字符串被分隔完。
3.2 分隔CSV文件
CSV(Comma-Separated Values)文件是一种常见的数据交换格式,常用于数据存储和数据导出,其格式为一行文本,由逗号分隔值组成。
下面给出一个示例文件,其中每一行为一个记录,以逗号分隔字段:
Name,Age,Sex,Address
Tom,20,Male,Beijing
Lucy,21,Female,Shanghai
John,22,Male,Tianjing
如果需要分隔CSV文件,可以使用下面的代码:
#include <stdio.h>
#include <string.h>
int main() {
char line[] = "Tom,20,Male,Beijing";
char *delim = ",";
char *token;
token = strtok(line, delim);
while (token != NULL) {
printf("%s, ", token);
token = strtok(NULL, delim);
}
return 0;
}
代码解析:
在上面的代码中,首先声明了一个包含一行记录的字符串line和分隔符delim,再使用strtok函数分隔字符串。程序的输出结果如下:
Tom, 20, Male, Beijing,
字符串被逗号分隔,每个字段被输出。同时,可以根据需要进一步处理每个字段,完成相关的操作。
4. 小结
在本文中,我们介绍了strtok函数的用法和实例演示。strtok函数是一种可以将字符串分解成多个子字符串的函数,分隔符可以是空格、制表符、换行符等。strtok函数是C标准库函数的一种,在实际项目开发中被广泛使用。