首页 > 解决方案 > 为什么我的 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;

标签: cinputscanf

解决方案


此调用中的格式字符串

scanf("%c", &op);

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

而是使用

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

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


推荐阅读