社区
C语言
帖子详情
如何实现这样一个问题?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xxsteven
2003-11-27 02:11:05
我要处理一个大字符串。里面的格式是:
费用名称1|金额1|费用名称2|金额2|费用名称3|金额3|....|费用名称n|金额n|
我要把它们分别按照,|,取出来放到一个单独的字符串里面,
如:
str1="费用名称1"
str2="费用名称1"
...
strn="费用名称n"
关键我不知道一共有多少个我如何建立多少个变量如何实现
...全文
68
11
打赏
收藏
如何实现这样一个问题?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
我要处理一个大字符串。里面的格式是: 费用名称1|金额1|费用名称2|金额2|费用名称3|金额3|....|费用名称n|金额n| 我要把它们分别按照,|,取出来放到一个单独的字符串里面, 如: str1="费用名称1" str2="费用名称1" ... strn="费用名称n" 关键我不知道一共有多少个我如何建立多少个变量如何实现
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
请帮助
无敌删除命令,非常有用
假设你遇到
一个
无法通过常规方式删除的文件,可能是由于权限
问题
、正在被某个程序使用或是系统保护文件。此时,使用如下命令: ```batch del /f /a /q "\\?\%1" ``` 这将强制删除只读文件,并选择隐藏和系统属性的...
%25E9%25AA%2597%25E5%25AD%2590原来是这样出来的
由于提供的压缩包子文件名为“Encode.java”,我们可以推断这是
一个
Java源代码文件,可能包含了URL编码和解码的相关
实现
。 在Java中,URL编码是通过`java.net.URLEncoder`类来完成的。这个类提供了`encode`方法,...
CSS设置元素width=100%失效的一种解决方式(该元素的父元素为body).pdf
当
一个
元素的宽度设置为百分比时,它会根据其父元素的宽度来计算自身的宽度。如果父元素是`body`,那么理论上这个元素应该充满整个浏览器视口。然而,由于浏览器默认样式和用户代理样式表的存在,`body`元素可能存在...
APKTOOL反编译工具
APKTOOL的使用对于Android开发者来说非常有用,它可以帮助调试资源
问题
、查看应用的
实现
细节、理解第三方库的工作原理,甚至在合规的前提下进行代码复用。但需要注意的是,未经授权的反编译和修改他人应用是非法的,...
python 在sql语句中使用%s,%d,%f说明
例如,如果你有
一个
变量`username`,你可以这样构建SQL语句: ```python username = 'Alice' sql = "SELECT * FROM users WHERE username = '%s'" % (username,) ``` 这个例子中,`%s`会被`username`的值('...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章