我对这段代码有疑问。当我输入输入(例如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;
}
答案 0 :(得分:0)
我找到了我最初发布的问题的解决方案。最初,我无法使用scanf,因为我不断收到来自VS(Visual Studio)的错误,严重性代码描述项目文件行抑制状态错误C4996'scanf':此函数或变量可能不安全。请考虑改用scanf_s 。要禁用弃用,请使用_CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅联机帮助。“
我在网上做了一些进一步的研究,发现可以通过在代码顶部附近粘贴“ #pragma warning(disable:4996)”行来绕开VS中的错误。
代码现在可以与scanf一起正常工作。