C 包含字符串的数组

C 包含字符串的数组,c,arrays,string,C,Arrays,String,嘿,我正在尝试创建一个发票程序,该程序应该接受项目名称、项目价格和数量,并将它们存储在列表或数组中。但是,当我运行程序时,会出现错误。有人能帮忙吗??我对c一无所知,看不出我是怎么出错的,这个概念很简单 节目如下: #include <string.h> #include <conio.h> int main() { char item_name[255]; float item_price=0; float quantity; int ch

嘿,我正在尝试创建一个发票程序,该程序应该接受项目名称、项目价格和数量,并将它们存储在列表或数组中。但是,当我运行程序时,会出现错误。有人能帮忙吗??我对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);
    }

  }
#包括
#包括
int main()
{
字符项_名称[255];
浮动项目价格=0;
浮动量;
智力选择;
int k;
for(k=0;选项!=2;k++)
{
printf(“输入项目名称:”);
scanf(“%s”,项目名称[k]);
printf(“\n”);
printf(“输入项目价格:”);
scanf(“%f”和项目价格[k]);
printf(“\n”);
printf(“输入项目数量:”);
scanf(“%f”和数量[k]);
printf(“\n\n”);
printf(“输入另一项?输入'1'表示是,输入'2'表示否:”);
scanf(“%d”,选择(&C);
}
}
以下是错误:

示例c:在函数“main”中: sample.c:15:8:警告:格式“%s”要求参数类型为“char*”,但参数2的类型为“int”[-Wformat=] scanf(“%s”,项目名称[k]); ^ 示例c:18:32:错误:下标值既不是数组,也不是指针,也不是向量 scanf(“%f”和项目价格[k]); ^ c:21:30:错误:下标值既不是数组,也不是指针,也不是向量 scanf(“%f”和数量[k]); ^ 示例c:25:5:错误:应为“;”在“}”标记之前 } ^ 示例c:8:10:警告:变量“数量”已设置但未使用[-Wunused但已设置变量] 浮动量; ^ 示例c:7:10:警告:变量“item_price”已设置但未使用[-Wunused但已设置变量] 浮动项目价格=0; ^

char item_name[255];
是单个字符串,而不是字符串数组

item_name[k]
是字符-不是字符*

因此,您需要将项_name设置为字符串的2D数组

char item_name[100][255];
然后使用

scanf ("%s", item_name[k]);
下一个问题是商品价格。它还需要是一个数组:

float item_price[100];
与浮动量相同

float quantity[100];
然后在最后一次扫描结束时,您缺少一个“;”

最后,您需要添加

if (choice == 2) break;
从循环中解脱出来

建议的代码允许100项,因此您应该添加:

if (k > 99) break;

作为for循环中的第一行

请将您得到的完整错误添加到问题帖子中(而不是作为评论)…很明显,我们只为一个项目名称、价格和数量分配空间,然后尝试存储其中的几个(在内存中不存在).
quantity
item\u price
不是数组,因此您不能在它们上使用[]……因此,对于OP:您可以控制有多少个项目吗?如果是这样,您可以为所有阵列分配足够大的阵列;如果没有,您将需要动态分配内存,或者通过分配新的链表条目(C语言的任何一个一年级计算机科学课程都会向您展示如何做),或者通过使用
realloc()
或kin来调整数组的大小。您能对上述程序的更正发表意见吗?