我无法为我的生活弄清楚如何做到这一点:
我应该以这种格式读取此输入:
yyyy mm dd总计(销售额)
即
1990 11 22 6.89
1990 11 24 7.20
1991 2 4 5.36
...(假设所有条目按年份排序,然后是月份,然后是日期)
然后我打印输入值,每个月的小计,每年的小计和总计 .
我的问题:如何在保持每个条目一致的同时存储输入值?我必须能够在计算小计时检查我是否在同一年和月份 . 我需要访问每个浮点数以计算小计 .
哦,我只能使用stdio.h或创建自己的函数 .
那么如何存储它们以便我可以在保持它们一致的同时引用每个值?
任何帮助将不胜感激 . 先感谢您 .
4 回答
好吧,你可以声明一个包含年份int的结构,月份和日期的两个字符,以及值的浮点数 . 然后创建这些结构的数组 . 如果您提前知道文件中有多少行,这会更容易 . 然后将数据读入结构体中,然后通过数组运行计算总计就可以了 .
你通常想用结构来做这样的事情:
然后,您可以创建
sale
项的数组,并引用单个字段,如:sales[i].year == sales[i+1].year
.除了已经说过如何存储结果数据之外,还有输入解析方面的东西 .
为了您的具体目标(仅使用
<stdio.h>
),您需要执行以下操作:但是,如果使用为此目的而制作的现有功能,错误处理/无效格式检测会更容易:
标准C(UN * X / POSIX,而不是),具有strptime()(在
<time.h>
中是标准包含文件)的功能 . 使用它而不是滚动自己的优点是它可以解析各种格式,检查日期有效性(你知道,就像在与美国和欧洲客户打交道时发生的月/日混合)并返回你的日期常用的数据结构(struct tm
) .这是另一个话题,但......
仅适用于已分拣的年份和月份: