目前我正在製作一個存儲程序,但它仍然打印1,當我已經添加一個項目。有人能告訴我這段代碼有什麼問題嗎?爲什麼此代碼仍然打印1,即使我已經添加了項目?
方向:輸入存儲(1-10)輸入1 - >添加項目(輸入任何內容) - >返回主菜單 - >顯示項目
#include <stdio.h>
#include <stdlib.h>
struct info1
{
int quantity2;
char name[60];
};
int main(void)
{
start: ;
struct info1 item1;
struct info1 item2;
struct info1 item3;
struct info1 item4;
struct info1 item5;
struct info1 item6;
struct info1 item7;
struct info1 item8;
struct info1 item9;
struct info1 item10;
int quantity1, mainmenu;
item1.quantity2 = 0;
item2.quantity2 = 0;
item3.quantity2 = 0;
item4.quantity2 = 0;
item5.quantity2 = 0;
item6.quantity2 = 0;
item7.quantity2 = 0;
item8.quantity2 = 0;
item9.quantity2 = 0;
item10.quantity2 = 0;
printf("\n==Storage==");
printf("\n\nInput Storage (1-10) : ");
scanf("%d", &quantity1);
printf("\nMain Menu\n1.Add Item\n2.Show Item\n3.Search Item\n4.Exit\n");
scanf("%d", &mainmenu);
if (quantity1 == 1)
{
if (mainmenu == 1)
{
printf("\nItem Name : ");
scanf("%s", item1.name);
fflush(stdin);
printf("\nItem Quantity : ");
scanf("%d", &item1.quantity2);
}
else if (mainmenu == 2)
{
printf("\n==Item List==");
if (item1.quantity2 == 0)
{
printf("\n1. - ");
}
else if (item1.quantity2 > 0)
{
printf("\n1. %s %d pcs", item1.name, item1.quantity2);
}
}
}
goto start;
}
有* *少數情況下,標籤和'goto'可以使用。使用它而不是循環是*不*這些情況之一。另外,在輸入流中調用'fflush'就像'stdin'一樣,在C規範中明確提到了* undefined behavior *。 –
你有沒有聽說過陣列? –
@StorryTeller對不起,這是我第一次在這裏發佈xD – RyvH