#include<stdio.h>
int main()
{
int x,y;
unsigned char operator;
printf("Enter two numbers and one operater \n");
scanf("%d %d %c ",&x,&y,&operator); // check " and commas
printf("Output ");
switch(operator)
{
case '+':printf("%d",x+y); // dont jst copy paste read and paste
break;
case '-':printf("%d",x-y);
break;
case '*':printf("%d",x*y);
break;
case '/':printf("%d",x/y);
break;
default: printf("invalid operator");
}
return 0;
}
执行后,我输入了两个数字5,10和一个运算符+。但我没有得到任何输出。但在我输入任何其他值后,我得到了输出。 例如:
Enter two numbers and one operater
40 20
+
10
Output 60
答案 0 :(得分:0)
scanf()
中的空格确保忽略所有空白字符(因此您点击ENTER,它被忽略)。因此,您必须输入非空白字符。请参阅scanf()
文档。解决方案是从scanf()中删除空白字符。
scanf()
以输入阅读而臭名昭着。因此,您应该考虑使用fgets()
,然后使用sscanf()
解析。
另见:Why does everyone say not to use scanf? What should I use instead?
答案 1 :(得分:0)
由于您的scanf("%d %d %c ",&x,&y,&operator);
语句而发生这种情况,只需删除%c
之后的空格。将其用作scanf("%d %d %c",&x,&y,&operator);
Resone是我们在scanf方法中添加空间的同时继续进行扫描。