+ -
当前位置:首页 → 问答吧 → 请问C里有没有分隔字符串的函数

请问C里有没有分隔字符串的函数

时间:2010-09-09

来源:互联网

请问C里有没有通过某个字符分隔字符串的函数,比如如下数据
aaa|bbb|ccc
我想通过|拆分后赋予变量后写入数据库

作者: hxl   发布时间: 2010-09-09

strstr
strchr

作者: ecjtubaowp   发布时间: 2010-09-09

strtok

作者: hellioncu   发布时间: 2010-09-09

个人觉得最好用的 strsep

作者: huailian1216   发布时间: 2010-09-09

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. int get_clone_split(char **array, size_t array_num, const char *str, const char *tok, char **free_p)
  5. {
  6.    int i = 1;
  7.    char *p;

  8.    *free_p = strdup(str);
  9.     p = *free_p;

  10.     if (!p)
  11.         return 0;

  12.    array[0] = p;

  13.    while (*p && i < array_num)
  14.    {
  15.        if (strchr(tok, *p))
  16.        {
  17.            *p = '\0';
  18.            array[i++] = p+1;
  19.        }
  20.        p ++;
  21.    }
  22.    return i;
  23. }

  24. void free_clone_split(char **free_p)
  25. {
  26.     if (*free_p)
  27.     {
  28.         free(*free_p);
  29.         *free_p = NULL;
  30.     }
  31. }

  32. #define ARRAY_NUM 10
  33. int main()
  34. {
  35.     const char *p = "[email protected]|HD|BJ|CHINA|2010-10-10";
  36.     char *array[ARRAY_NUM] = {0};
  37.     char *free_p = NULL;
  38.     int split_num = 0;
  39.     int i;

  40.     split_num = get_clone_split(array, ARRAY_NUM, p, "|@.-", &free_p);

  41.     for (i = 0; i < split_num; i++ )
  42.     {
  43.         printf("%s\n", array[i]);
  44.     }

  45.     free_clone_split(&free_p);
  46.     return 0;
  47. }
复制代码

作者: zhangsuozhu   发布时间: 2010-09-09

sscanf

作者: 幻の上帝   发布时间: 2010-09-09

  1. #include <stdlib.h>
  2. #include <string.h>

  3. int split_callback(const char *str, const char *tok, void (*callback)(char *, void *), void *callback_param)
  4. {
  5.     char *p;
  6.     char *phead;
  7.     char *clone_str = strdup(str);

  8.     int i = 1;;

  9.     p = clone_str;

  10.     if (!p) return 0;

  11.     phead = p;

  12.     while (*p)
  13.     {
  14.         if (strchr(tok, *p))
  15.         {
  16.             *p = '\0';
  17.             callback(phead, callback_param);
  18.             phead = p+1;
  19.             i ++;
  20.         }
  21.         p ++;
  22.     }
  23.     callback(phead, callback_param);
  24.     free(clone_str);
  25.     clone_str = NULL;
  26.     return i;
  27. }

  28. void print_str(char *str, void *other)
  29. {
  30.     printf("%s\n", str);
  31. }

  32. int main()
  33. {
  34.     const char *p = "[email protected]|HD|BJ|CHINA|2010-10-10";
  35.     split_callback(p, "@|.-", print_str, NULL);
  36.     return 0;
  37. }
复制代码

作者: zhangsuozhu   发布时间: 2010-09-09

汗 做这样的事我也是自己写函数的

作者: 论坛ID   发布时间: 2010-09-09

callback

作者: hxl   发布时间: 2010-09-09

请问callback是哪里定义的函数?有这样的库函数吗?

作者: hxl   发布时间: 2010-09-09

相关阅读 更多

热门下载

更多