如何实现这样一个问题?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

xxsteven 2003-11-27 02:11:05
我要处理一个大字符串。里面的格式是:
费用名称1|金额1|费用名称2|金额2|费用名称3|金额3|....|费用名称n|金额n|
我要把它们分别按照,|,取出来放到一个单独的字符串里面,
如:
str1="费用名称1"
str2="费用名称1"
...
strn="费用名称n"
关键我不知道一共有多少个我如何建立多少个变量如何实现
...全文
58 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxsteven 2003-11-28
  • 打赏
  • 举报
回复
先谢谢大家,不过现在问题麻烦了,字符船变了,如下:
比如三张发表:
费用名称1|金额1|费用名称2|金额2\n|费用名称1|金额1|费用名称2|金额2\n|费用名称1|金额1|费用名称2|金额2\n\n|是这样的,\n是一张结束的标志,\n\n是全部结束的标志,我只要 把3张区别出来,成
费用名称1|金额1|费用名称2|金额2\n
费用名称1|金额1|费用名称2|金额2\n
费用名称1|金额1|费用名称2|金额2\n
然后把“|”去掉直接打出来就完了,如何实现呢?在线上等待。
Maxwell 2003-11-28
  • 打赏
  • 举报
回复
更简单了,一个字符一个字符的读就行,反正分两次把一个汉字复制过去也不会有问题,读到|就跳过,遇到\n就结束一张了。
Maxwell 2003-11-27
  • 打赏
  • 举报
回复
用vector吧,每次push_back,如果知道有三张,每次读到一个\n就算结束就可以了,用一个for 循环三次就处理完了三张。
normalnotebook 2003-11-27
  • 打赏
  • 举报
回复
用链表处理比较好,用字符数组不行,用变量记录也不好,因为根本不知道有多少,只有用链表把他串起来.分割时用strtok()分割就可以了.
xxsteven 2003-11-27
  • 打赏
  • 举报
回复
用链表如何实现
psbeond 2003-11-27
  • 打赏
  • 举报
回复
可以用链表实现,就不用管多少了,也可以用vector+pair
minitigger 2003-11-27
  • 打赏
  • 举报
回复
if(str[strlen(str)-1] == '\n' &&str[strlen(str)-2] =='\n') this is the last one.
xxsteven 2003-11-27
  • 打赏
  • 举报
回复
但是现在还有个问题那个大字符串是一个票据数据,里面有3张票据数据,每一张都是以"\n"结束
最后一张是"\n\n"结束,我如何区分3张呢 ?
liuleilover 2003-11-27
  • 打赏
  • 举报
回复
遍历字符串str,每遇到一个'|'记下它后一个字符的地址str_next,将此'|'改为'\0'则
可以得到这一字串的长度,动态分配内存str_mem将字串str拷贝到str_mem,将str
付值为str_next重复此过程........
问题即解.
rerli 2003-11-27
  • 打赏
  • 举报
回复
我正好写了个函数处理这种问题。
你看看,函数返回的就是分割后值的个数,值存储在一个指针数组中。

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

/*
destin : 外界存储分割后值的指针数组。
source : 源需要分割字符串。
sign : 分割符号。
返回值 : 分割后值的个数。
*/
int split(char *destin[], char *source, char *sign)
{
#define NULL 0
int i=0;
char *p;

p = strtok(source,sign);
while (p)
{
destin[i++] = p;
p = strtok(NULL, sign);
}
return i;
}

main()
{
static char ss[100] = {"aaaa1|bbbb1|aaaa2|bbbb2|aaaa3|bbbb3"};
char *name[20];
int i;
int num;

num = split(name,ss,"|");
printf("%d\n",num);

for(i=0; i<num; i++)
printf("%s\n",name[i]);

printf("\n");
system("pause");
}
xxsteven 2003-11-27
  • 打赏
  • 举报
回复
请帮助

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧