gpt4 book ai didi

c - 不要求 char "choose"在 switch 语句之前

转载 作者:行者123 更新时间:2023-11-30 20:40:01 24 4
gpt4 key购买 nike

此代码会自行执行,而不会在 switch 语句之前要求 char“choose” 进行进一步处理 scanf("%c",&choose); switch(choose) .

printf("enter option 1,2,3 or 4 \n\n");
scanf("%c",&choose); // why it not ask to input char
switch(choose)
{
case '1': case '+':
{
printf("enter 1st value\n");
scanf("%f",&a);
printf("enter 2st value\n");
scanf("%f",&b);
c=a+b;
printf("%f + %f = %f",a,b,c);
break;
}
case '2': case '-':
{
printf("enter 1st value\n");
scanf("%f",&a);
printf("enter 2nd value\n");
scanf("%f",&b);
c=a-b;
printf("%f - %f = %f",a,b,c);
break;
}
case '3': case'*':
{
printf("enter 1st value\n");
scanf("%f",&a);
printf("enter 2nd value\n");
scanf("%f",&b);
c=a*b;
printf("%f * %f = %f",a,b,c);
break;
}
}

最佳答案

printf("enter option 1,2,3 or 4 \n\n");
scanf("%c",&choose);

在您的代码中,如果您在上述给定代码之前使用任何 scanf,则此行为是预期的,因为前面的 scanf 读取输入而留下 \n 在输入缓冲区中,作为下一个 scanf 的输入。

要解决此问题,请在 scanf(...) 之前使用 fflush(stream),这应该可以解决问题。

 fflush(stdin);

或者您可以使用getchar()函数,这也可以解决您的问题。

关于c - 不要求 char "choose"在 switch 语句之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24692817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com