在編程過程中,有時需要對字符串進行分割.而有效使用這些字符串分隔函數將會給我們帶來很多的便利.
下面我將在MSDN中學到的strtok函數做如下翻譯.
strtok :在一個字符串查找下一個符號
char *strtok( char *strToken, const char *strDelimit );
返回值:返回指向在strToken字符串找到的下一個符號的指針,當在字符串找不到符號時,將返回NULL.每
次調用都通過用NULL字符替代在strToken字符串遇到的分隔符來修改strToken字符串.
參數:
strToken:包含符號的字符串
strDelimit:分隔符集合
注:第一次調用strtok函數時,這個函數將忽略間距分隔符並返回指向在strToken字符串找到的第一個符
號的指針,該符號后以NULL字符結尾.通過調用一系列的strtok函數,更多的符號將從strToken字符串中分
離出來.每次調用strtok函數時,都將通過在找到的符號后插入一個NULL字符來修改strToken字符串.為了
讀取strToken中的下一個符號,調用strtok函數時strToken參數為NULL,這會引發strtok函數在已修改過
的strToken字符串查找下一個符號.
Example(摘自MSDN)
/* STRTOK.C: In this program, a loop uses strtok
* to print all the tokens (separated by commas
* or blanks) in the string named "string".
*/
#include <string.h>
#include <stdio.h>
char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char *token;
void main( void )
{
printf( "%s\n\nTokens:\n", string );
/* Establish string and get the first token: */
token = strtok( string, seps );
while( token != NULL )
{
/* While there are tokens in "string" */
printf( " %s\n", token );
/* Get next token: */
token = strtok( NULL, seps );
}
}
Output
A string of ,,tokens
and some more tokens
Tokens:
A
string
of
tokens
and
some
more
tokens