在c/c++中,字符串分割函数主要有两种:一是strtok函数,另一个就是strsep函数。下面我们对这两个函数作一个详细解释说明。
1、strtok
原形:
char* strtok(char *str, const char *delim);
功能:
分解字符串为一组字符串;str为要分割的字符串,delim为分隔符;
返回值:
从str开头开始的一个个子串,当没有分割的子串时返回NULL。
说明:
* strtok函数工作时,若在字符串中发现分隔符会将该字符改为’\0’;
* 第一次调用时,strtok函数必须给予参数str字符串,之后调用则将str参数设置为NULL;至于为什么之后调用将str参数设置为NULL,在下文介绍;
* strtok内部记录上次调用字符串的位置,所以不支持多线程,可重入版本为strtok_r。
示例
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "hello,,world!#c";//strtok函数会改变源字符串,所以不能写 char* str = "";
char* delim = ",#";
char *token = NULL;
token = strtok(str,delim);
while(token)
{
puts(token);
token = strtok(NULL,delim);
}
return 0;
}
运行结果:
源码
其源码有多种实现方式,下面只简单介绍其中的一种。
//字符串分割函数
#include<stdio.h>
#include<