我的代码在第二个scanf语句之后没有工作。我还是C ++的新手,所以我不确定我做错了什么。我和其他人一样看过这个网站,到目前为止还没找到任何东西。我也尝试了fflush声明,但也没有解决它,任何其他建议将非常感谢。
include <stdio.h>
int main(void)
{
//Intro message
printf("This program will take the order of a customer and then subtract their order from the inventory list. After calculations a new inventory list will appear\n");
// declare variables
int dough, sauce, cheese, pepperoni, sausage, greenPeppers, blackOlives, mushrooms;
int num1;
char pizza;
// create inventory
dough = 50;
sauce = 50;
cheese = 50;
pepperoni = 50;
sausage = 50;
greenPeppers = 50;
blackOlives = 50;
mushrooms = 50;
//display the inventory
printf("\n The currrent inventory is: \n Dough:%d", dough);
printf("\n Sause:%d", sauce);
printf("\n Cheese:%d", cheese);
printf("\n Pepperoni:%d", pepperoni);
printf("\n Sausage:%d", sausage);
printf("\n Green Peppers:%d", greenPeppers);
printf("\n Black Olives%d", blackOlives);
printf("\n Mushrooms:%d", mushrooms);
//get customer input
printf("\nWhat type of pizza would you like? Please type a lowercase letter and only chose one. Type C for Cheese, P for Pepperoni, S for Sausage, and V for Veggie.\n");
scanf_s(" %c", &pizza);
printf("\nHow many pizzas would you like to order? Maximum of 10.\n");
scanf_s(" %d", &num1);
//This is where it stops
printf("It cuts out here, why can I not see anything after this line?");
// calculate what inventory will be taken out
cheese = cheese - num1;
dough = dough - num1;
sauce = sauce - num1;
switch (pizza)
{
case 'c':
cheese = 50 - num1;
break;
case 'p':
pepperoni = pepperoni - num1;
break;
case 's':
sausage = sausage - num1;
break;
case 'v':
blackOlives = blackOlives - num1;
greenPeppers = greenPeppers - num1;
mushrooms = mushrooms - num1;
break;
}
// display final inventory
printf("The new inventory is: \n Dough:%d", dough);
printf("\n Sause:%d", sauce);
printf("\n Cheese:%d", cheese);
printf("\n Pepperoni:%d", pepperoni);
printf("\n Sausage:%d", sausage);
printf("\n Green Peppers:%d", greenPeppers);
printf("\n Black Olives%d", blackOlives);
printf("\n Mushrooms:%d", mushrooms);
return 0;
}
答案 0 :(得分:1)
问题是您使用的是scanf
(或其堂兄scanf_s
)。 scanf
问题 不适用于交互式输入,并导致令人困惑的结果,例如您所看到的。
相反,使用fgets
函数将数据读入字符数组。如果需要将该字符数组转换为数字,请使用atoi
。