社区
C语言
帖子详情
如何实现这样一个问题?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xxsteven
2003-11-27 02:11:05
我要处理一个大字符串。里面的格式是:
费用名称1|金额1|费用名称2|金额2|费用名称3|金额3|....|费用名称n|金额n|
我要把它们分别按照,|,取出来放到一个单独的字符串里面,
如:
str1="费用名称1"
str2="费用名称1"
...
strn="费用名称n"
关键我不知道一共有多少个我如何建立多少个变量如何实现
...全文
79
11
打赏
收藏
如何实现这样一个问题?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
我要处理一个大字符串。里面的格式是: 费用名称1|金额1|费用名称2|金额2|费用名称3|金额3|....|费用名称n|金额n| 我要把它们分别按照,|,取出来放到一个单独的字符串里面, 如: str1="费用名称1" str2="费用名称1" ... strn="费用名称n" 关键我不知道一共有多少个我如何建立多少个变量如何实现
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
请帮助
无敌删除命令,非常有用
无敌删除命令,非常有效哦,大家可以试一下
APKTOOL反编译工具
@echo off set PATH=%CD%;%PATH%; java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
python 在sql语句中使用%s,%d,%f说明
主要介绍了python 在sql语句中使用%s,%d,%f说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
PowerDesigner中的CDM设计的外键作主键的
问题
PowerDesigner中的CDM设计的外键作主键的
问题
BAT批处理脚本-文本操作-逃逸字符%的详细解释.zip
为避免误触发,有些改为了txt格式,使用时请自行查看业务然后改为bat格式即可。
C语言
70,034
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章