我正在尝试在命令行应用程序中制作计算器,但是当我使用`
int a, b, result;
printf("Enter problem:\n");
if(scanf("%i+%i", &a, &b))
{
result = a + b;
printf("%i\n", result);
}
else if(scanf("%i*%i", &a, &b))
{
result = a * b;
printf("%i\n", result);
}
Run Code Online (Sandbox Code Playgroud)
如果我写5+5
,我就会有10
,但是当我写的时候,5*5
它就会表现出来32771
。如果我交换这些语句,当我写 时5*5
,我有 25 个,但是当我写 时5+5
,我32771
也有。预先感谢您的回答!
if(scanf("%i+%i", &a, &b))
Run Code Online (Sandbox Code Playgroud)
该行没有任何意义,因为返回的是成功scanf
扫描的项目数。
如果你想检查是否scanf
成功
if(scanf("%i+%i", &a, &b) == 2)
Run Code Online (Sandbox Code Playgroud)
其余部分无效,因为scanf
从输入流读取数据,第二个scanf
将没有要扫描的整行。
char line[100];
fgets(line, 100, stdin); // check for errors
if(sscanf(line, "%i+%i", &a, &b) == 2)
{
result = a + b;
printf("%i\n", result);
}
else if(sscanf(line, "%i*%i", &a, &b) == 2)
{
result = a * b;
printf("%i\n", result);
}
else
{
printf("Invalid Input\n");
}
Run Code Online (Sandbox Code Playgroud)