如何在C中从用户接收三个输入

时间:2018-12-12 03:58:11

标签: c

我对这段代码有疑问。当我输入输入(例如150.79-789.4)时,程序不执行任何操作。它甚至没有停止运行,而是继续运行。有人知道我在做什么错吗?

    #include <stdio.h>
    int main(void)
    {
    float value1, value2;
    char operator, ch;
    printf("Type in your expression.\n");

    scanf_s("%f %c %f", &value1, &operator, &value2);

当我尝试以这种方式接收输入时,它会起作用。

    //This version works...
    /*
    scanf_s("%f", &value1);
    ch = getchar();
    scanf_s("%c", &operator);
    scanf_s("%f", &value2);
    */

    switch (operator)
    {
    case '+':
    printf ("%.2f\n", value1 + value2);
    break;
    case '-':
        printf("%.2f\n", value1 - value2);
        break;
    case '*':
        printf("%.2f\n", value1 * value2);
        break;
    case '/':
        if (value2 == 0)
            printf("Division by zero.\n");
        else
            printf("%.2f\n", value1 / value2);
        break;
    default:
        printf("Unknown operator.\n");
        break;
    }

    system("pause");
    return 0;
    }

1 个答案:

答案 0 :(得分:0)

我找到了我最初发布的问题的解决方案。最初,我无法使用scanf,因为我不断收到来自VS(Visual Studio)的错误,严重性代码描述项目文件行抑制状态错误C4996'scanf':此函数或变量可能不安全。请考虑改用scanf_s 。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅联机帮助。“

我在网上做了一些进一步的研究,发现可以通过在代码顶部附近粘贴“ #pragma warning(disable:4996)”行来绕开VS中的错误。

代码现在可以与scanf一起正常工作。