【发布时间】:2013-12-22 21:00:36
【问题描述】:
我正在尝试制作一个基本的 C 控制台应用程序计算器。然而,当我执行它时,会跳过第二个 scanf 命令,而是运行第三个命令。这是一个问题,因为这里我需要获取用户 +、-、* 或 / 的操作。我该如何阻止这种情况发生?
float num1;
char sign;
float num2;
float total;
printf("~~~ Calculator ~~~\n");
printf("Please enter the first number: ");
scanf("%f", &num1);//Get value of num1 from user
printf("\nNow please enter the operation , either +, -, *, or / : ");
scanf("%c", &sign);//Get value of sign from user
printf("\n\nFinaly enter the second number: ");
scanf("%f", &num2);
编辑:实际上,在尝试了各种建议之后,它在 %c 之前缝合了一个空格,这是解决问题的正确方法和最干净的方法。感谢您的帮助。
【问题讨论】:
-
第二个scanf没有被跳过。想一想:第一个 scanf 扫描“%f”,其中不包括您键入的换行符。第二个 scanf 扫描“%c”,它当然应该读取换行符。对于这种输入,我推荐使用 fgets + sscanf。
-
这是复制的,天知道有多少问题。问题是找到一个好的标签作为副本。我在“相关”列表中看到了 5 个可能的竞争者,但它们看起来都不是一个好的选择。
标签: c