C语言分解函数strtok
- char *strtok(char *s, char *delim);
功能:分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串。
说明:首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL。strtok在s中查找包含在delim中的字符并用NULL('\0')来替换,直到找遍整个字符串。返回指向下一个标记串。当没有标记串时则返回空字符NULL。
- strtok函数的功能是把一个字符串由指定的分隔符分成更小的字符串。
例如:"this is a demo"用" "(空格)来分隔,就可以得到"this","is","a","demo"四个单词。
strtok的用法:
第一步:初始化
strtok("this is a demo"," ");
第二步:得到其它的子字符串
strtok(NULL," ");
每执行一次第二步就可以得到一个子字符串,直到返回NULL,表示查找结束。
实例:
#include <string.h>
#include <stdio.h>
int main () {
char str[80] = "This is - www.runb.com - website";
const char s[2] = "-";
char *token;
/* 获取第一个子字符串 */
token = strtok(str, s);
/* 继续获取其他的子字符串 */
while( token != NULL ) {
printf( "%s\n", token );
token = strtok(NULL, s);
}
return(0);
}
输出
This is
www.runb.com
website
- 调用方式 : char *strtok(char *str1, char *str2);
说明 : strtok()函数的原型在string.h中
功能说明:函数strtok()返回字符串str1中指向一个由str2所指定的字符或者字符串的分隔符的指 针,当没有要返回的分隔符时,就返回一个空指针。
函数strtok()实际上修改了有str1指向的字符串。每次找到一个分隔符后,一个空(NULL)就被放到分隔符处,此时NULL指针指向后面的字符串。函数用这种方法来连续查找该字符串。
例子:
#include <string.h>
#include <stdio.h>
int main()
{
char *p;
char str[100]="This is a test ,and you can use it";
p = strtok(str," "); // 注意,此时得到的 p为指向字符串:"This",即在第一个分隔 符前面的字符串,即每次找到一个分隔符后,一个空(NULL)就被放到分隔符处,所以此时NULL指针指向后面的字符串:"is a test ,and you can use it"。
printf("%s\n",p); // 此时显示:This
do
{
p = strtok(NULL, ","); // NULL 即为上面返回的指针,即字符串:
// "is a test ,and you can use it"。
if(p)
printf("|%s",p);
}while(p);
system("pause");
return 0;
}