经与结构和数组的麻烦在我的C程序
*****代码我在从我的名单大厦下面的第一个表的麻烦新问题 *****经与结构和数组的麻烦在我的C程序
已更新了什么我正在尝试输出。
[这是输出应该如何看的照片] [1](注意第一个表)
[这就是我下面的代码输出的截图] [2]
我无法让第一张桌子按每个出售物品的数量下降。
我的目标:
我试图创建一个C程序来计算总销售额从2个输入文件收集数据公司和输出这些三两件事:
1) 销售项目数量列于的降序销售每件商品的数量显示在分类为标题“商品编号”,“商品说明”和“数量销售”的表格中。
2)在列出的每个项目降序总销售额的订单的销售总数(总销售额=出售*单位价格)量显示在与标头“项目号码”归类一个表中,“项目说明” ,“已售数量”,“单价”和“总销售额”。
3)的总销售额值(各总的从上面#2)的总和
让我们原型声明
int readItemList(struct items[]);
在这里,你定义一个函数readItemList
它返回一个int
,并作为参数取指向struct item
。 差不多但不完全是你想要的。
你想要的是功能采取指针struct Item
(注意大写I
):
int readItemList(struct Item *items);
第二个错误是因为你不包括<string.h>
。
然而这些只是问题的编译器检测,当你运行程序,你有一个更糟糕的错误,这将导致未定义行为,最有可能导致崩溃:您可以使用一个未初始化的局部变量。
在main
功能,您有
//Creating dynamic array of structure
struct Item *items;
的问题是,你实际上并不创造任何东西。您只需将未初始化的指针(意思是其值为不确定)传递给readItemList
函数,然后readItemList
将其视为已分配的数组。你没有为这个指针分配内存。
最简单的办法就是让items
在main
功能的阵列:
struct Item items[200];
除非你有文件中的200余项这就够了,你甚至可以使数组小。
另一种解决方案是实际动态分配项目的内存,在main
之前将其传递给readItemList
函数。或者让readItemList
函数分配它,但是然后你需要改变它以获取一个指向变量的指针,仿照通过引用传递,并且根据需要分配和重新分配。
在你的原型中,你没有声明一个需要an array of struct Item
的函数。 struct items[]
并不意味着什么明智这里(有像struct items
没有结构,必须使用struct Item items[]
,像type identifier[]
。另一个例子是struct Item array_name[]
。 对于问题strcmp
,你需要包括string.h
。这就是为什么它给人的implicit declaration
警告。