strtok.c
来源:互联网 发布:金蝶数据库迁移 编辑:程序博客网 时间:2024/05/18 03:25
原型:char *strtok(char *s, char *delim);
功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。
strtok在s中查找包含在delim中的字符并用NULL('\0')来替换,直到找遍整个字符串。
返回值:从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。
所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。
#include <string.h>#include <stdio.h>char string[] = "A string of,tokens and some more tokens";//要分解的字符串char seps[] = " "; //分隔符字符集的字符串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 );//首次调用时,第一个参数string指向要分解的字符串,之后再次调用要把s设成NULL }}
函数原型:char *strtok(char *s, char *delim);
函数功能:把字符串s按照字符串delim进行分割,然后返回分割的结果。
函数使用说:
1.strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’\0′)来替换,直到找遍整个字符串。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位。(2)要获得所有的分割单元必须反复调用strtok函数。
2.strtok函数以后的调用时的需用NULL来替换s.
3.形参s(要分割的字符串)对应的变量应用char s[]=”….”形式,而不能用char *s=”….”形式。
例子如下:
#include <stdio.h> #include <string.h> void main() { char buf[]=”Golden Global View”; char* token = strtok( buf, ” “); while( token != NULL ) { printf( ”%s “, token ); token = strtok( NULL, ” “); } return 0; }
其结果为:
Golden
Global
View
但是如果我们把char buf[]=”Golden Global View”;换成char *buf=”Golden Global View”; 则会出错,原因我还没找到,如果有人发现了原因望告知于我。
如果我们把token = strtok( NULL, ” “);换成token = strtok( buf, ” “);则while循环会成为一个无限循环,而输出的结果就只为:Golden。我的解释原因如下:
在strtok函数体中有一个char 类型的指针(假设为 char *p),它的作用就是令p=s,用于保存s的起始地址。由于在随后的处理中指针p的值会一直保存(C语言中指针的特点),因此在以后的strtok调用中用NULL来代替s的原因就是防止p被重新赋值而指向s的起始地址,从而可以保证p可以指向s的其他位置,直到最后分割完整个字符串。
但是如果用s来代替NULL,那么每次调用strtok时,p就会指向s的初始地址,从而只能获得第一个分割出来的字串,如上面的例子中while会是一个无限循环,而输出的结果只能是“Golden”。
- strtok.c
- c strtok()
- C function strtok()
- C 字符串分隔 strtok
- C函数Strtok详解
- c中的strtok函数
- linux c strtok
- C strtok strtok_r
- c strtok函数用法
- c strtok函数用法
- C/C++ strtok函数
- C/C++ strtok函数
- C中的strtok
- strtok函数(C)
- C语言strtok函数
- c - strtok / strrchr
- c语言:strtok()函数
- C语言函数strtok
- 2012天津赛区第六题---You Are the One(hdu4283)
- 找不到.classpath文件啊,新手求教!
- 查询IP地址
- Trident state
- response设置编码
- strtok.c
- java--反射
- 安装Android SDK
- mybatis 3.1.1 分析
- php C extension扩展
- oracle 一存储过程执行超过9小时诊断
- asp.net中用Eval绑定时间的格式
- lucene结构详解之五词典(tis)及词典索引(tii)信息
- cmake Poco 静态库链接出错问题小结