`

关于strtok的问题,已经解决办法(对空字符串切分存在问题)

 
阅读更多

     在编写程序是发现string.h中的strtok有些和想象的不同

     比如对字符串“|2|”以"|"切分时,原以为会返回,第一为空字符串,第二个为2 ,第三个为空字符串。但是当使用时发现,第一为2,二、三均为NULL

     

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

char* split(const char *strToken,const char* strDelimit)
{
    char   *p; 
    char   *pd; 
    static   char   *ps ;

    if   (strToken   !=   NULL) 
        ps   =   strToken; 
    p   =   ps; 

    while   (*ps   !=   '\0 ') 
    { 
        pd   =   strDelimit; 
        while  ( (*pd   !=   '\0')   &&   (*pd   !=   *ps)) 
            pd   ++; 
        if   (*pd   ==   *ps) 
        { 
            *ps   =   NULL; 
            ps++; 
            return   p; 
        } 
        else 
            ps++; 
    } 

    ps   =   NULL; 
}

int main(int argc, char *argv[])
{
  char str[10]="|2|";
  char * first=strtok(str,"|");
  char * second=strtok(NULL,"|");
  char * third=strtok(NULL,"|");
  printf("first:%s\n",first);
  printf("second:%s\n",second);
  printf("third:%s\n",third);
  
  first=split(str,"|");
  second=split(NULL,"|");
  third=split(NULL,"|");
  printf("first:%s\n",first);
  printf("second:%s\n",second);
  printf("third:%s\n",third);
  
  system("PAUSE");	
  return 0;
}

 

打印结果

first:2

second:<NULL>

third:<NULL>

first:

second:2

thirsd:

 

 

0
0
分享到:
评论

相关推荐

    C++字符串分割函数+VC助手

    C++字符串分割源码,破解版VC助手,兼容多个windows版本

    C++常用字符串分割方法实例汇总

    我们在编程的时候经常会碰到字符串分割的问题,这里总结下,也方便我们以后查询使用。 一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数...

    使用一个字符串分割另一个字符串

    * 使用一个字符串分割另一个字符串 * * @param delimiter 边界上的分隔字符 * @param haystack 输入的字符串 * @param out 输出的字符串指针 * @return 分割成了多少个成员 */ int explode(char *delimiter, ...

    使用strtok函数截取字符串得到相应的子串存入数组中

    原字符串中包含浮点数、逗号、字符串、整数,长整型数等,本程序实现的是取出其中的浮点数和长整型数

    C++ 字符串截取(strtok)

    C++字符串截取,例如:"adda,dagf,dfa,df",将','去除,将每部分字符出入一个指定数组

    C语言中计算字符串长度与分割字符串的方法

    C语言strlen()函数:返回字符串的长度 头文件: #include strlen()函数用来计算字符串的长度,其原型为: unsigned int strlen (char *s); 【参数说明】s为指定的字符串。 strlen()用来计算指定的字符串s 的...

    C语言切割多层字符串(strtok_r strtok使用方法)

    主要介绍了C语言切割多层字符串的方法,说了strtok的弱点,使用strtok_r的方法

    如何使用PHP中的字符串函数

    前两个函数是输出字符串.字符串中如果有变量名则被替换成其值. 后两个函数类似于C的同名函数. (2)strchr,strlen,strtok,strrchr,strrev,strstr,strtolower, strtoupper,substr,ucfirst 这些是常用的字符串操作...

    字符串分割

    功能效果与strtok函数一样,但是效率极高,只要遍历一次字符串,就可以把字符串分割开,效率高于strtok

    字符串相关函数介绍

    字符串相关函数介绍,strchr ,strstr,strtok

    c语言字符串分割函数strtok

    这个例子从文本文件ad9361.txt一行一行读取数据,通过spi设置寄存器值。支持命令读写:spidev_test -r F1 -w A0,-r参数表示寄存器地址,-w表示要写入的值,均为16进制(不要加0x开头)

    strtok使用範例

    strtok使用範例,可幫助C之初學者對程式學習上有些許幫助。 建議軟體VS 2005/2008

    strtok函数C实现

    char *strtok(const char *strToken, const char *strDelimit) 将strToken中以字符串strDelimit进行分割.vs2010测试通过

    c语言 字符串的拼接和分割实例

    1.字符串的拼接 使用c的函数char *strcat(char *str_des, char *str_sou); 将字符串str_sou接在字符串str_des后面(放在str_des的最后字符和“\0”之间)。 注意不要越界,可用strlen(input)函数求字符串长度之后再...

    C++中strtok()函数的用法介绍

    参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时 则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置...

    C++的字符串分割函数的使用详解

    经常碰到字符串分割的问题,这里总结下,也方便我以后使用。 一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串...

    strtok函数的用法 strtok函数的用法

    strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok函数的用法strtok...

    字符串C++整理

    平时对字符串的操作的是很多的,了解下常用的字符串函数会使 c 编程变得很快捷!这里适当整理一下,方便以后参考。使用时,会用到大量指针的操作,注意加头文件:  #include  一、str 系列  1.strtok  ...

    20120324_字符串分割(C++)1

    一、用 strtok 函数进行字符串分割 二、用 STL 进行字符串的分割 三、用 Boost 进行字符串的分割

Global site tag (gtag.js) - Google Analytics