免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2769 | 回复: 2
打印 上一主题 下一主题

[算法] 字符串分割算法求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-21 16:17 |只看该作者 |倒序浏览
有一个字符串str,有n个字段,每个字段是以"|"分割的,如:
1|111|2|22222|3|3333|4|4444

字符串的排位规则是:位元1|内容1|位元2|内容2|位元3|内容3
现在想将位元值及对应的内容分别取出来给两个变量,用什么算法可以实现?
我现在只能把字符按顺序取到一个变量中,函数原型如下:求教高手帮忙解决....谢谢
/*从str中取出各个字段,字段之间是以'|'分隔的, len表示str的长度*/
void GetValue(char *value, char *str, int len)
{
        int i,j;
        int pps;
        char tmp[512];

         
        memset(tmp,'\0',sizeof(tmp));       
        j=0;
        for (i=0;i<len;i++)
        {
                       
                tmp[j] = str[i];
                j++;
                                       
                if (str[i]=='|')
                {
                        if (str[i]=='\0')
                        {
                           break;
                        }
                }       
        }
        memset(value,'\0',sizeof(value));
        strcpy(value, tmp);
}

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-04-21 17:09 |只看该作者
n个?不确定?

用strstr比较理想。

论坛徽章:
0
3 [报告]
发表于 2006-04-21 17:36 |只看该作者

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

  3. int main()
  4. {
  5.         char str[] = "1|111|2|2222|3|3333|4|4444";
  6.         char delim[] = "|";
  7.         char *token;
  8.         int  num;

  9.         if ((token = strtok(str, delim)) == NULL)
  10.                 return 1;
  11.         num = atoi(token);
  12.         if ((token = strtok(NULL, delim)) == NULL)
  13.                 return 1;
  14.         printf("%d %s\n", num, token);
  15.        
  16.         while ((token = strtok(NULL, delim)) != NULL) {
  17.                 num = atoi(token);
  18.                 if ((token = strtok(NULL, delim)) == NULL)
  19.                         break;
  20.                 printf("%d %s\n", num, token);
  21.         }
  22.        
  23.         return 0;
  24. }

复制代码

不知道这个是不是你想要的,最好定义个结构数组,类似这样:
struct xxx{
        int/char ;
        char *;
};
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP