Chinaunix首页 | 论坛 | 博客
  • 博客访问: 678901
  • 博文数量: 148
  • 博客积分: 4086
  • 博客等级: 上校
  • 技术积分: 1766
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-06 23:27
文章分类

全部博文(148)

文章存档

2013年(19)

2012年(9)

2011年(106)

2009年(14)

分类: C/C++

2012-08-04 16:02:19

◆ 使用strtok函数分割。
     原型:char *strtok(char *s, char delim);
    strtok在s中查找包含在delim中的字符并用NULL('\0')来替换,直到找遍整个字符串。  
     功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。
    说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。
                strtok在s中查找包含在delim中的字符并用NULL('\0')来替换,直到找遍整个字符串。
    返回值:从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。
                  所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。

使用例:
#include
#include
#include
#include

int main(int argc,char **argv)
{
    char * buf1="aaa, ,a, ,,,bbb-c,,,ee|abc";

    /* Establish string and get the first token: */
    char* token = strtok( buf1, ",-|");
    while( token != NULL )
     {
           /* While there are tokens in "string" */
           printf( "%s ", token );
          /* Get next token: */
          token = strtok( NULL, ",-|");
     }
    return 0;
}

OUT 值:
aaa

a

bbb
c
ee
abc

◆ 使用strstr函数分割。

    原型:extern char *strstr(char *haystack,char *needle);

    用法:#include
   功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束NULL)
   说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。

使用例:
#include
#include

int main(int argc,char **argv)
{
     char *haystack="aaa||a||bbb||c||ee||";
     char *needle="||";
     char* buf = strstr( haystack, needle);
     while( buf != NULL )
     {
         buf[0]='\0';
         printf( "%s\n ", haystack);
          haystack = buf + strlen(needle);
          /* Get next token: */
          buf = strstr( haystack, needle);
     }
     return 0;
}

OUT 值:
aaa
a
bbb
c
ee

◆ strtok比较适合多个字符作分隔符的场合,而strstr适合用字符串作分隔符的场合。

阅读(1073) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~