社区
C语言
帖子详情
如何实现这样一个问题?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xxsteven
2003-11-27 02:11:05
我要处理一个大字符串。里面的格式是:
费用名称1|金额1|费用名称2|金额2|费用名称3|金额3|....|费用名称n|金额n|
我要把它们分别按照,|,取出来放到一个单独的字符串里面,
如:
str1="费用名称1"
str2="费用名称1"
...
strn="费用名称n"
关键我不知道一共有多少个我如何建立多少个变量如何实现
...全文
58
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
打赏
举报
回复
请帮助
springboot(酒店管理系统)
开发语言:Java JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.6/5.7(或8.0) 数据库工具:Navicat 开发软件:idea 依赖管理包:Maven 代码+数据库保证完整可用,可提供远程调试并指导运行服务(额外付费)~ 如果对系统的中的某些部分感到不合适可提供修改服务,比如题目、界面、功能等等... 声明: 1.项目已经调试过,完美运行 2.需要远程帮忙部署项目,需要额外付费 3.本项目有演示视频,如果需要观看,请联系我 4.调试过程中可帮忙安装IDEA,eclipse,MySQL,JDK,Tomcat等软件 重点: 需要其他Java源码联系我,更多源码任你选,你想要的源码我都有! 需要加v19306446185
BP神经网络matlab实例.doc
数学模型算法
设计.zip
设计.zip
基于 Spring Cloud 组件构建的分布式服务架构
Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、高效的企业级应用。 1. Spring框架:Spring是
一个
轻量级的Java开发框架,提供了丰富的功能和模块,用于开发企业级应用。它包括IoC(Inverse of Control,控制反转)容器、AOP(Aspect-Oriented Programming,面向切面编程)等特性,可以简化开发过程、提高代码的可维护性和可测试性。 2. Spring MVC框架:Spring MVC是基于Spring框架的Web框架,用于开发Web应用程序。它采用MVC(Model-View-Controller,模型-视图-控制器)的架构模式,将应用程序分为模型层、视图层和控制器层,提供了处理请求、渲染视图和管理流程的功能。 3. MyBatis框架:MyBatis是
一个
持久层框架,用于与数据库进行交互。它提供了一种将数据库操作与Java对象映射起来的方式,避免了手动编写繁琐的SQL语句,并提供了事务管理和缓存等功能,简化了数据库访问的过程
【微信小程序毕业设计】书店系统开发项目(源码+演示视频+说明).rar
【微信小程序毕业设计】书店系统开发项目(源码+演示视频+说明).rar 【项目技术】 微信小程序开发工具+java后端+mysql 【演示视频-编号:246】 https://pan.quark.cn/s/cb634e7c02b5 【
实现
功能】 用户信息管理,图书信息管理,图书类型管理,图书留言管理,论坛信息管理等
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章