C语言strtok函数使用

  • 使用场景
  • 代码实例
  • 注意事项
  • 参考

使用场景

字符串内容中被某个或者某些字符分割成若干部分,需要取出被分隔的若干个子字符串又不想去确定特殊字符的个数。
比如将下列字符串2164B851B4544AE79A03F2B644985DD1,2164B851B4544AE79A03F2B644985DD2,2164B851B4544AE79A03F2B644985DD3,2164B851B4544AE79A03F2B644985DD4,2164B851B4544AE79A03F2B644985DD5
分割成
2164B851B4544AE79A03F2B644985DD1
2164B851B4544AE79A03F2B644985DD2
2164B851B4544AE79A03F2B644985DD3
2164B851B4544AE79A03F2B644985DD4
2164B851B4544AE79A03F2B644985DD5
5个字串。

代码实例

#include <string.h>
#include <stdio.h>int main(int argc, char *arg[])
{char str[] = "2164B851B4544AE79A03F2B644985DD1,\
2164B851B4544AE79A03F2B644985DD2,\
2164B851B4544AE79A03F2B644985DD3,\
2164B851B4544AE79A03F2B644985DD4,\
2164B851B4544AE79A03F2B644985DD5";printf( "str is \"%s\"\n", str);char delims[] = ",";char *result = NULL;result = strtok(str, delims);while(result != NULL){printf( "result is \"%s\"\n", result);printf( "str is \"%s\"\n", str);result = strtok(NULL, delims);}
}

运行结果如下:
str is “2164B851B4544AE79A03F2B644985DD1,2164B851B4544AE79A03F2B644985DD2,2164B851B4544AE79A03F2B644985DD3,2164B851B4544AE79A03F2B644985DD4,2164B851B4544AE79A03F2B644985DD5”
result is “2164B851B4544AE79A03F2B644985DD1”
str is “2164B851B4544AE79A03F2B644985DD1”
result is “2164B851B4544AE79A03F2B644985DD2”
str is “2164B851B4544AE79A03F2B644985DD1”
result is “2164B851B4544AE79A03F2B644985DD3”
str is “2164B851B4544AE79A03F2B644985DD1”
result is “2164B851B4544AE79A03F2B644985DD4”
str is “2164B851B4544AE79A03F2B644985DD1”
result is “2164B851B4544AE79A03F2B644985DD5”
str is “2164B851B4544AE79A03F2B644985DD1”

注意事项

1.源字符串str 在执行完一次strtok后发生变化。
2.while循环中再次调用strtok时,第一个参数填 NULL
3.若源字符串str结尾再增加一个分隔符 “,”,运行结果不变(除第一个str的打印)。
4.strtok函数也可以按不止一个字符分割字符串,比如:

#include <string.h>
#include <stdio.h>int main(int argc, char *arg[])
{char str[] = "2164B851B4544AE79A03F2B644985DD1,\
2164B851B4544AE79A03F2B644985DD2;\
2164B851B4544AE79A03F2B644985DD3,\
2164B851B4544AE79A03F2B644985DD4;\
2164B851B4544AE79A03F2B644985DD5*\
2164B851B4544AE79A03F2B644985DD6,";printf( "str is \"%s\"\n", str);char delims[] = ",;*";char *result = NULL;result = strtok(str, delims);while(result != NULL){printf( "result is \"%s\"\n", result);printf( "str is \"%s\"\n", str);result = strtok(NULL, delims);}
}

运行结果如下:
str is “2164B851B4544AE79A03F2B644985DD1,2164B851B4544AE79A03F2B644985DD2;2164B851B4544AE79A03F2B644985DD3,2164B851B4544AE79A03F2B644985DD4;2164B851B4544AE79A03F2B644985DD5*2164B851B4544AE79A03F2B644985DD6,”
result is “2164B851B4544AE79A03F2B644985DD1”
str is “2164B851B4544AE79A03F2B644985DD1”
result is “2164B851B4544AE79A03F2B644985DD2”
str is “2164B851B4544AE79A03F2B644985DD1”
result is “2164B851B4544AE79A03F2B644985DD3”
str is “2164B851B4544AE79A03F2B644985DD1”
result is “2164B851B4544AE79A03F2B644985DD4”
str is “2164B851B4544AE79A03F2B644985DD1”
result is “2164B851B4544AE79A03F2B644985DD5”
str is “2164B851B4544AE79A03F2B644985DD1”
result is “2164B851B4544AE79A03F2B644985DD6”
str is “2164B851B4544AE79A03F2B644985DD1”

参考

https://www.cnblogs.com/roucheng/p/cfenge.html

C语言strtok函数使用实例以及注意事项相关推荐

  1. fclose在c语言中的作用,c语言fcloseall函数用法实例介绍

    c语言fcloseall函数用法实例介绍.fcloseall函数的返回值,函数 fcloseall() 将所有打开的流与其底层的文件或功能集合关闭.任何缓冲的数据都将首先被写入,使用 fflush(3 ...

  2. sqrt函数原型c语言,C语言sqrt函数的实例用法讲解

    前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...

  3. 恶心的C语言strtok函数

    从C#.JAVA到C ,让我觉得像是从公产主义社会回到了原始社会,不顺手,所以很心里憋气!!! 函数名: strtok  功  能: 查找由在第二个串中指定的分界符分隔开的单词  用  法: char ...

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

    1.头文件:#include <string.h> 2.定义函数:char * strtok(char *s, const char *delim);      分解字符串为一组字符串.s ...

  5. C语言strtok函数的用法

    先理解strtok函数的定义,尤其是指针方面的,需要自己理解. 原型: char *strtok(char *s, const char *delim); #include<string.h&g ...

  6. C语言strtok函数

    strtok是C语言用于分割字符串的函数,需要include<string.h>. 第一次使用时第一个参数传入待分割的字符串,第二个参数传入分割符号. 第二次使用时第一个函数传入NULL, ...

  7. c语言strtok函数完美实现

    看到网上好多错误的strtok实现,也不能说错,准确的说是没有完全的实现strtok,现自己写了下,目前还没有找到bug,如果有不对的欢迎指出. 大多数网上的strtok实现的代码跑不过a[]={&q ...

  8. c语言以空格分割字符串_C语言strtok()函数:用指定的分隔符分解字符串

    函数名: strtok 头文件: 函数原型: char *strtok(char *str1, const char *str2); 功能: 用指定的分隔符分解字符串 参数:   char *str1 ...

  9. 切割字符串长度php,C++_C语言中计算字符串长度与分割字符串的方法,C语言strlen()函数:返回字符串 - phpStudy...

    C语言中计算字符串长度与分割字符串的方法 C语言strlen()函数:返回字符串的长度头文件: #include strlen()函数用来计算字符串的长度,其原型为: unsigned int str ...

最新文章

  1. 我眼中的DevOps(转)
  2. SpringMVC基于框架编写CommDao类---findList
  3. Linux shell编程与实践(五)之shell程序中循环结构
  4. eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决
  5. 故障排查:是什么 导致了客户端批量心跳超时掉线
  6. php5和php7的bccomp计算精度区别
  7. 内核常见锁的机制与实现分析1
  8. Linux四种共享内存技术(附源码):SystemV、POSIX mmap、memfd_create、dma-buf
  9. oracle10g静默升级,Linux下静默安装,升级和删除Oracle10g客户端
  10. 修改高通IPQ4019/4018的flash的分区
  11. 常见电脑主机报警提示音及对应原因
  12. 微信公众号开发详细过程(亲手总结)
  13. 学而思python培训班
  14. css3箭头水平淡入淡出
  15. 马云:不要买房了,未来房子如葱!10年后最便宜的是房子车子,而最贵的是…...
  16. 食饵捕食者模matlab,食饵——捕食者数学模型研究.doc
  17. 基于单片机的电子琴设计
  18. 【JAVA】(实训1)EL表达式编码问题
  19. 交互设计1.3线框图
  20. 记一次服务器被挖矿木马攻击的经历

热门文章

  1. 单片机实现低功耗的几种方法和注意事项
  2. 如何使用js实现电影海报画廊特效?
  3. Python 爬虫 爬取豆瓣Top 250 并将海报图片爬取下来保存
  4. 等价输入干扰补偿的思想
  5. samsung学习笔记4
  6. 吕氏春秋 论人 八观六察
  7. 江西省职业院校技能大赛中职组网络安全竞赛之Linux操作系统渗透测试
  8. 今天发现百度地图街景拼接的一处BUG
  9. 联想ThinkPad E560 按F5 F6调节屏幕亮度,将调节屏幕亮度的按钮改为fn+F5 F6控制
  10. MongoDB:PyMongo百万级数据去重