为什么这个C程序没有正常执行?

时间:2016-11-04 11:23:51

标签: c

#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

2 个答案:

答案 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方法中添加空间的同时继续进行扫描。