【发布时间】:2021-10-26 11:59:50
【问题描述】:
我认为它与第二个 scanf 函数或 if/else 语句有关。
#include <stdio.h>
int main()
{
int n1;
int n2;
char op;
printf("insert first number: ");
scanf("%d", &n1);
printf("Insert operation (+, -, *, /): ");
scanf("%c", &op);
printf("insert second number: ");
scanf("%d", &n2);
if(op='+')
{
printf("%d + %d = %d", n1, n2, n1+n2);
}
else if(op='-')
{
printf("%d - %d = %d", n1, n2, n1-n2);
}
else if(op='*')
{
printf("%d * %d = %d", n1, n2, n1*n2);
}
else if(op='/')
{
printf("%d / %d = %d", n1, n2, n1/n2);
}
else
{
printf("error [use +, -, *, /]");
}
当我运行它时,它会等待我输入第一个数字,然后打印第二个提示,但不是等待我输入操作,而是直接跳到打印第三个提示,我不知道为什么。
【问题讨论】:
-
第二个
scanf()调用在输入缓冲区中留下一个换行符。后来被第三次调用消耗。 -
旁注,您不是在比较
if(op='+'),而是在此处分配。你可能想输入,if(op == '+') -
在这种情况下,在第二个
scanf()之后调用一个简单的getchar()应该可以解决问题。 -
@alex01011 我不敢相信我忘记了 ==/= 的区别。换行符是 / 对吗?我可以通过输入 // 而不是我想来解决这个问题?
-
@whookimo 用户的3121023 建议应该可以解决它。无论哪种方式,您都不应该将
scanf()用于此类操作。你可以试试fgets(),然后用sscanf()解析输入。
标签: c variables char calculator