zoukankan      html  css  js  c++  java
  • 恶心的C语言strtok函数

    从C#、JAVA到C ,让我觉得像是从公产主义社会回到了原始社会,不顺手,所以很心里憋气!!!

    函数名: strtok 
    功  能: 查找由在第二个串中指定的分界符分隔开的单词 
    用  法: 
    char *strtok(char *str1, char *str2); 
    程序例: 

    #include 
    <string.h> 
    #include 
    <stdio.h> 

    int main(void

       
    char input[16= "abc,d"
       
    char *p; 

       
    /* strtok places a NULL terminator 
       in front of the token, if found 
    */
     
       p 
    = strtok(input, ","); 
       
    if (p)   printf("%s\n", p); 

       
    /* A second call to strtok using a NULL 
       as the first parameter returns a pointer 
       to the character following the token  
    */
     
       p 
    = strtok(NULL, ","); 
       
    if (p)   printf("%s\n", p); 
       
    return 0
    }
     
    下面是恶心的strtok函数,用作分割字符串
    它的第二个参数不能是char*的变量,是char[]的变量则没问题
    FUCK!
    我做了N多次测试才发现的这个问题,害得我调试UNIX网络编程作业好长时间

    这个函数的调用真是奇怪
    第一次要设定参数,第二次参数竟然可以NULL
    然后函数竟然能分割第一次参数设置的字符
    我无语了
    这样的设计也太不人性化了


    下面认真的说一下这个函数,如有哪个和我一样郁闷的人发现这篇文章,或许能少走些弯路
    函数第一次调用需设置两个参数,strtok(str,",") str 需要分割的串 “,”根据,分割
    第一次分割的结果,返回串中第一个,之前的字串,也就是上面的程序第一次输出abc

    第二次调用该函数strtok(NULL,"."),第一个参数设置为NULL,第二个参数还是分割的依据
    结果返回分割依据后面的字串,即上面的程序输出d

  • 相关阅读:
    botzone Tetris2
    NOIP2017游记
    城乡联谊胡策会糊厕R3
    SRM 20
    AtCoder Regular Contest 082
    AtCoder Grand Contest 019
    复数模版
    SRM13
    NOI2017&&codeM2017游记
    java多线程编程
  • 原文地址:https://www.cnblogs.com/lancidie/p/1949185.html
Copyright © 2011-2022 走看看