我正在尝试在命令行应用程序中制作计算器,但是当我使用`
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)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |