linux下strtok和strtok_r的使用
来源:互联网 发布:微型网络摄像机 编辑:程序博客网 时间:2024/06/01 07:22
头文件 <string.h>
一、strtok
.原型 char * strtok(char * s,const char * delim);
功能 对字符串进行分段处理,每次调用strtok,返回由delim中任意一个字符分隔的一段字符串。
参数说明:@s:输入字符串,且该字符串不能为const类型。
@delim:所有用于将@s进行分隔的字符
@return:每调用一次,返回字符串中的一段,以'\0'结束
使用注意:第一次调用,传s进去,后面的调用都传NULL。
函数实现原理:将@s中的所有delim字符都替换为‘\0',即原来字符串自动被分为多段,当传入的@s为NULL时,自动调用下一段;@s不为NULL时,返回从@s开始的第一段
eg.
char s[] = "111:222";
char *p = strtok (s, ":");
printf ("%s\r\n", p); //打印出111
printf ("%s\r\n", s); //同样打印出111,因为原来@s中的":"被替换为'\0',截断了字符串。
p = strtok (NULL, ":"); //注意传入参数为NULL。
printf ("%s\r\n", p); //打印出222,原@s的第二段字符串
二、strtok_r
原型 char *strtok_r(char *s, const char *delim, char **save);
功能 与strtok一样,只是额外提供了线程安全功能
参数@save,定义的一个空指针,在调用strtok_r函数时,将其地址( &save )传入函数,用于保存下一个字符串的起始位置
eg.
char s[] = "111:222";
char *save = NULL;
char *p = strtok_r (s, ":", &save); //传入save的地址
printf ("%s\r\n", p); //打印出111
printf ("%s\r\n", save); // @@@@@@@@@注意:打印出222,save指向下一段的开始
三、总结
strtok函数,在执行一次之后,在函数内部使用一个变量保存下一个分段的位置。
strtok_r函数,在执行一次之后,由用户定义的一个指针保存下一个分段的位置。
微弱的区别。
- linux下strtok和strtok_r的使用
- strtok和strtok_r的使用原理
- strtok和strtok_r函数的使用
- strtok和strtok_r的区别
- 关于函数strtok和strtok_r的理解
- strtok和strtok_r的源代码分析
- strtok函数和strtok_r函数的区别
- [copy]strtok()和strtok_r()
- strtok和strtok_r
- strtok和strtok_r
- strtok和strtok_r
- strtok和strtok_r
- strtok()和strtok_r()
- strtok和strtok_r
- strtok和strtok_r
- strtok()和strtok_r()
- strtok和strtok_r
- strtok和strtok_r区别
- Android的SharePreferences存储方式
- IP,子网掩码,默认网关和DNS都是什么,有什么用
- 【android】:android积累2之如何实现点击一个按钮或者选项然后出现一条消息
- 深入浅出 - Android系统移植与平台开发(三)- 编译并运行Android4.0模拟器
- 编写将给定字符串倒序输出的函数[Java笔试题]
- linux下strtok和strtok_r的使用
- springmvc 文件上传
- 探秘Java中String、StringBuilder以及StringBuffer
- Python heapq priority queue
- C++实验6
- 队列(Queue)
- c语言项目-注释转换
- 动态规划
- 顺时针打印矩阵