C语言strtok()函数:字符串分割

1、头文件:#include <string.h>
2、定义函数:char * strtok(char *s, const char *delim);
     分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。
3、函数说明:

strtok()用来将字符串分割成一个个片段。参数s 指向欲分解的字符串,参数delim 则为分隔字符串;

当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符。

在第一次调用时,strtok()必需给予参数s 字符串,往后的调用则将参数s 设置成NULL。每次调用成功则返回下一个分割后的字符串指针。

4、返回值:返回下一个分割后的字符串指针,如果已无从分割则返回NULL。

5、注意:使用该函数进行字符串分割时,会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。第一次分割之后,原字符串str是分割完成之后的第一个字符串,剩余的字符串存储在一个静态变量中,因此多线程同时访问该静态变量时,则会出现错误。

备注:strtok函数会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。如果要保持原字符串的完整,可以使用strchr和sscanf的组合等。

例程:

#include <string.h>
#include <stdio.h>
 
int main () {
   char str[80] = "ab,cd,ef";
   const char s[2] = ",";
   char *token;
   
   /* 获取第一个子字符串 */
   token = strtok(str, s);
   
   /* 继续获取其他的子字符串 */
   while( token != NULL ) {
      printf( "%s\n", token );
      token = strtok(NULL, s);
   }
   
   return(0);
}

执行结果:
ab
cd
ef

Guess you like

Origin blog.csdn.net/weixin_42216720/article/details/120623741