zoukankan      html  css  js  c++  java
  • C语言的字符串分割

    说起来很有意思,自认为对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 beNULL.

    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 );
       
    }            

    The above code will display the following output:

       result is "now "
       result 
    is " is the time for all "
       result 
    is " good men to come to the "
       result 
    is " aid of their country"
    这个函数跟编译器中的词法分析很向,在以后的文本处理中,会解决很多问题。看来我有必要系统的学习下C的库函数,而不仅仅是死扎在语法和一些算法技巧上面。这样在平常的工作中才能事半功倍。
    使用这个函数,形如下面得配置文件就非常容易解析:
    id1 value1 value2 value3
    id2 value1 value2 value3
    ...
    使用这个函数,分割字符串就更加方便了,例如下面待分割的字符串:
    12|2345|asld|alsfalskd
    只要读取待处理的数据,然后调用四次strtok就能够解析出每行的值,以前我一般不是自己解析就是用sscanf,但是strtok更加合适,也更加啊灵活!
  • 相关阅读:
    Swift3 重写一个带占位符的textView
    Swift3 使用系统UIAlertView方法做吐司效果
    Swift3 页面顶部实现拉伸效果代码
    Swift3 倒计时按钮扩展
    iOS 获取当前对象所在的VC
    SpringBoot在IDEA下使用JPA
    hibernate 异常a different object with the same identifier value was already associated with the session
    SpringCloud IDEA 教学 番外篇 后台运行Eureka服务注册中心
    SpringCloud IDEA 教学 (五) 断路器控制台(HystrixDashboard)
    SpringCloud IDEA 教学 (四) 断路器(Hystrix)
  • 原文地址:https://www.cnblogs.com/linxr/p/2304350.html
Copyright © 2011-2022 走看看