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

头文件:#include <string.h>

定义函数:char * strtok(char *s, const char *delim);

函数说明:strtok()用来将字符串分割成一个个片段。参数s 指向欲分割的字符串,参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s 字符串,往后的调用则将参数s 设置成NULL。每次调用成功则返回下一个分割后的字符串指针。

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

范例

 
 1 #include <string.h>
 2 main(){
 3 char s[] = "ab-cd : ef;gh :i-jkl;mnop;qrs-tu: vwx-y;z";
 4 char *delim = "-: ";
 5 char *p;
 6 printf("%s ", strtok(s, delim));
 7 while((p = strtok(NULL, delim)))
 8 printf("%s ", p);
 9 printf("\n");
10 }


执行结果:
ab cd ef;gh i jkl;mnop;qrs tu vwx y;z     //-与:字符已经被\0 字符取代

公司项目中的应用:

 1 int        CDevNetComm::SplitString( char const*  strSource, std::vector<std::string>& tokens, char* szSeps )
 2 {
 3     tokens.clear();
 4     char    szSource[256];
 5     strcpy( szSource, strSource );
 6     char*    token = strtok( (char*)szSource, szSeps );
 7     while( token != NULL )
 8     {
 9         tokens.push_back( token );
10         token = strtok( NULL, szSeps );
11     }
12     return (int)tokens.size();
13 }

 

posted @ 2015-09-24 17:35  shmilxu  阅读(4582)  评论(0编辑  收藏  举报