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更加合适,也更加啊灵活!
  • 相关阅读:
    杭电1013-Digitai Root(另解)
    gets()和getchar()还有getch()的区别
    杭电1013-Digitai Root(这是一道考研编程题-天大2015)
    杭电1062-字符串翻转
    杭电2012-素数判定
    杭电2010-水仙花
    杭电1002-A + B Problem II
    【bzoj4008 hnoi2015】 亚瑟王
    【bzoj4572 scoi2016】围棋
    【bzoj4571 scoi2016】美味
  • 原文地址:https://www.cnblogs.com/linxr/p/2304350.html
Copyright © 2011-2022 走看看