为什么我的scanf不能正常工作,当我移动它时,它可以正常工作吗?

时间:2019-12-15 18:04:55

标签: c input scanf

我想用C语言编写一个简单的计算器,但是当我运行此代码时,它只会获取我的数字,而不会获取我的运算符,并且会从运行窗口中消失!当我将scanf运算符移动到另一个scanf的顶部时,它工作正常!为什么?!!!!

float num1, num2;

char op;
scanf("%f", &num1);
scanf("%f", &num2);
scanf("%c", &op);

switch(op)
{
    case '+':
    printf("%f + %f = %f", num1, num2, num1 + num2);
    break;
    case '-':
    printf("%f - %f = %f", num1, num2, num1 - num2);
    break;
    case '*':
    printf("%f * %f = %f", num1, num2, num1 * num2);
    break;
    case '/':
    printf("%f / %f = %f", num1, num2, num1 / num2);
    break;

    default :
    printf("error");
}

return 0;

1 个答案:

答案 0 :(得分:2)

此调用中的格式字符串

scanf("%c", &op);

用于从输入缓冲区读取所有字符,包括空格字符。因此,在您输入了最后一个数字之后,此呼叫将读取换行符'\n'

代替使用

scanf(" %c", &op);
      ^^^

这允许跳过输入缓冲区中的空白字符。