2015-02-10 123 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循環

相關問題