C语言的字符串分割

说起来很有意思,自认为对C语言理解得还是比较深刻的。但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动。每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

说起来很有意思,自认为对C语言理解得还是比较深刻的。但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动。每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串,既累人又容易出错。感概技术学得不够全面啊!这里引用一段strtok用法:

The strtok() function returns a pointer to the next “token” in str1, where str2 contains the delimiters that determine the token. strtok() returns NULL if no token is found. In order to convert a string to tokens, the first call to strtok() should have str1 point to the string to be tokenized. All calls after this should have str1 be NULL.

For example:

char str[] = "now # is the time for all # good men to come to the # aid of their country";  
   char delims[] = "#";  
   char *result = NULL;  
   result = strtok( str, delims );  
   while( result != NULL ) {  
       printf( "result is \"%s\"\n", result );  
       result = strtok( NULL, delims );  
   }              
/* 何问起 hovertree.com */
  1. The above code will display the following output:  
  2.   
  3.    result is “now ”  
  4.    result is ” is the time for all ”  
  5.    result is ” good men to come to the ”  
  6.    result is ” aid of their country” 
 这个函数跟编译器中的词法分析很像,在以后的文本处理中,会解决很多问题。看来我有必要系统的学习下C的库函数,而不仅仅是死扎在语法和一些算法技巧上面。这样在平常的工作中才能事半功倍。
使用这个函数,形如下面的配置文件就非常容易解析:
id1 value1 value2 value3
id2 value1 value2 value3
...
    使用这个函数,分割字符串就更加方便了,例如下面待分割的字符串:
12|2345|asld|alsfalskd
        只要读取待处理的数据,然后调用四次strtok就能够解析出每行的值,以前我一般不是自己解析就是用sscanf,但是strtok更加合适,也更加啊灵活!

推荐:
http://www.cnblogs.com/roucheng/p/3454292.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120507.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月24日 下午1:00
下一篇 2021年12月24日 下午2:00


相关推荐

  • AI重构小家电:海尔在AWE2026展示AI先行者的“新逻辑”与“慢功夫”

    AI重构小家电:海尔在AWE2026展示AI先行者的“新逻辑”与“慢功夫”

    2026年3月14日
    1
  • 往事再见!砥砺前行

    往事再见!砥砺前行4 个小时后我将离开深圳北上杭州 是的 我离职了 又一次换了城市 列维长跳 又一次上演 和大多数为求职和求偶或路过或移居的人们不同 我深深感受着每一座城市的厚重与轻浮 在所有这些地方 在定居者们看来 我又仅仅是另一个路过者 而已 不得不说 哈尔滨是一个神奇的地方 每一次列维长跳都和哈尔滨有关 我永远记得 2002 年的寒冷的冬天 那即便是对我这种超级抗冻的家伙也绝对是个考验 我在冰冻的松

    2026年3月16日
    2
  • Maven 入门教程

    Maven 入门教程   maven是一个项目管理工具,不仅可以把源代码构建为可以发布的项目(包括编译、打包、测试、分发),还可以生成报告、生成web站点。本文介绍maven的主要使用过程,作为入门1、maven的安装   windows下载地址http://maven.apache.org/download.cgi zip解压缩包,无需安装直接解压即可。   配置环境变量:MAVE…

    2025年10月6日
    8
  • 【Java】Red5服务器搭建(实现在线直播,流媒体视频播放)「建议收藏」

    引言流媒体文件是目前非常流行的网络媒体格式之一,这种文件允许用户一边下载一边播放,从而大大减少了用户等待播放的时间。另外通过网络播放流媒体文件时,文件本身不会在本地磁盘中存储,这样就节省了大量的磁盘空间开销。正是这些优点,使得流媒体文件被广泛应用于网络播放。流媒体服务器是通过建立发布点来发布流媒体内容和管理用户连接的。流媒体服务器能够发布从视频采集卡或摄像机等设备中传来的实况流,也可以发布事先…

    2022年4月18日
    302
  • python中关于round函数的小坑「建议收藏」

    python中关于round函数的小坑「建议收藏」round函数很简单,对浮点数进行近似取值,保留几位小数。比如第一个参数是一个浮点数,第二个参数是保留的小数位数,可选,如果不写的话默认保留到整数。这么简单的函数,能有什么坑呢?1、round的

    2022年7月5日
    22
  • charles导致mac无法上网_charles抓不到请求

    charles导致mac无法上网_charles抓不到请求前言charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可解决方法1打开网络偏好设置,

    2022年7月29日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号