【发布时间】:2025-12-28 20:20:19
【问题描述】:
嘿,我正在尝试创建一个发票程序,该程序应该接受商品名称、商品价格和数量,并将它们存储在列表或数组中。但是,当我运行该程序时,会出现错误。有人可以帮忙吗?我是 c 的菜鸟,看不出我是怎么出错的,这个概念很简单..
这是程序:
#include <string.h>
#include <conio.h>
int main()
{
char item_name[255];
float item_price=0;
float quantity;
int choice;
int k;
for (k=0;choice != 2;k++)
{
printf ("Enter item name: ");
scanf ("%s", item_name[k]);
printf ("\n");
printf ("Enter item price: ");
scanf ("%f", &item_price[k]);
printf ("\n");
printf ("Enter item quantity: ");
scanf ("%f", &quantity[k]);
printf ("\n\n");
printf ("Enter another item? Enter '1' for yes and '2' for no: ");
scanf ("%d", &choice);
}
}
这些是错误:
sample.c:在函数“main”中: sample.c:15:8:警告:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“int”[-Wformat=] scanf ("%s", item_name[k]); ^ sample.c:18:32:错误:下标值既不是数组也不是指针也不是向量 scanf ("%f", &item_price[k]); ^ sample.c:21:30:错误:下标值既不是数组也不是指针也不是向量 scanf ("%f", &quantity[k]); ^ sample.c:25:5: 错误:在 '}' 标记之前需要';' } ^ sample.c:8:10:警告:变量“数量”已设置但未使用 [-Wunused-but-set-variable] 浮动数量; ^ sample.c:7:10:警告:变量“item_price”已设置但未使用 [-Wunused-but-set-variable] 浮动项目价格=0; ^
【问题讨论】:
-
请将您遇到的完整错误添加到问题帖子中(而不是 cmets)。
-
...嗯——很明显,我们只为 一个 项目名称、价格和数量分配空间,然后尝试存储其中几个(在内存中不存在)。
-
quantity和item_price不是数组,因此您不能在它们上使用 []。 -
...所以,对于 OP:你能控制有多少项目吗?如果是这样,您可以为所有这些分配足够大的数组;如果没有,您将需要动态分配内存,方法是分配新的链表条目(任何一年级的 C 计算机科学课程都会向您展示如何做),或者使用
realloc()或 kin 来调整数组。 -
你能评论一下上面程序的更正吗?