我是一名Java程序员,试图为一个班级和一个人学习C语言,我无法解决这个问题。没有理由说这不应该起作用,但事实并非如此。我正在尝试编写一个简单的计算器应用程序,无论我如何编写它,我输入的第一个数字(变量a)最终为0,但第二个数字很好。输入为5 + 6时,输出为6.我缺少什么?
#include <stdio.h>
int main()
{
long int a, b, c;
char op;
c = 0;
printf("Enter the expression: ");
scanf("%ld %s %ld", &a, &op, &b);
switch(op){
case('+'): c = a+b; break;
case('-'): c = a-b; break;
case('*'): c = a*b; break;
case('/'): c = a/b; break;
default: break;
}
printf("\n%ld", c);
return 0;
}
我不确定你是否给5<space>+<space>6
或5+6
(没有空格)作为输入。如果你正在做第一个,那么尝试做第二个,即number1+number2
,字符之间没有空格。并删除scanf("%ld %s %ld")
中的空格。
希望这可以帮助。
如果在第一次转换(如果有)完成之前发生输入故障,则scanf
函数返回宏EOF的值。否则,该函数返回分配的输入项的数量,如果早期匹配失败,则可以少于提供的数量,甚至为零。
因此,请始终检查scanf
是否成功以及是否正确分配了项目数。
最好知道转换说明符(在%
字符之后的内容)和长度修饰符及其在C中的含义。
查看C委员会草案(N1570)章节7.21.6.2 The fscanf
function和7.21.6.4 The scanf
function,您将了解如何使用scanf
。