2015-02-10 99 views
1

嘿我试图创建一个应该接受项目名称,项目价格和数量并将它们存储在列表或数组中的发票程序。当我运行程序但是我收到错误。有人可以帮忙吗?我小白到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:warning:格式'%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:error:expected';'before'}'token } ^ sample.c:8:10:warning:variable'quantity'set but not used [-Wunused-but - 设置变量] 浮点数量; ^ sample.c:7:10:warning:变量'item_price'设置但未使用[-Wunused-but-set-variable] float item_price = 0; ^

+3

请添加你的问题后完整的错误(不作为评论)。 – Celeo 2015-02-10 21:11:52

+0

...好 - 很明显,我们只为_one_项目名称,价格和数量分配空间,然后尝试存储其中的几个(在不存在的内存中)。 – 2015-02-10 21:13:52

+0

'quantity'和'item_price'不是数组,所以你不能在它们上面使用[]。 – 2015-02-10 21:13:58

回答

1
char item_name[255]; 

是一个单一的字符串 - 不是一个字符串数组。

item_name[k] 

是char - 不是一个char *

所以,你需要做ITEM_NAME串

的二维数组
char item_name[100][255]; 

然后用

scanf ("%s", item_name[k]); 

下一个问题是item_price。它还需要一个数组:

float item_price[100]; 

而且随着浮动量相同的故事

float quantity[100]; 

然后你缺少一个“;”在最后的scanf

年底最后,你需要添加

if (choice == 2) break; 

走出循环。

所提出的代码允许100个项目,所以你应该都这么加:

if (k > 99) break; 

在第一行中的for循环

相关问题