首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-10-31 
关于strtok的问题,已经解决办法(对空字符串切分存在问题)???? 在编写程序是发现string.h中的strtok有些和

关于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:

?

?

热点排行