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

  • 相关阅读:
    RMI几种公布和引用服务的方式
    mysql 多日志表结果集合拼接存储过程
    USRP通信的结构体和常量(上位机、下位机共用)
    Flash Builder4破解步骤
    leetcode 217 Contains Duplicate 数组中是否有反复的数字
    关于权限表的基本设计
    Objective-C之成魔之路【7-类、对象和方法】
    vs2008C1902程序数据库管理不匹配
    配置hadoop集群一
    BZOJ 2338 HNOI2011 数矩形 计算几何
  • 原文地址:https://www.cnblogs.com/lancidie/p/1949185.html
Copyright © 2011-2022 走看看