我是一名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;
}
答案 0 :(得分:1)
如果发生输入失败,scanf
函数将返回宏EOF的值
在第一次转换(如果有)完成之前。否则,该函数返回
分配的输入项目数,可以少于提供的数量,甚至为零
早期匹配失败的事件。
因此,请始终检查scanf
是否成功以及项数是否正确分配。
很高兴知道转换说明符(在%
字符之后是什么)以及长度修饰符及其在C语言中的含义。
查看C委员会草案(N1570)7.21.6.2 The fscanf
function和7.21.6.4 The scanf
function部分,您将对如何使用scanf
有个好主意。
答案 1 :(得分:0)
我不确定您是在输入5<space>+<space>6
还是5+6
(无空格)作为输入。如果您要进行第一个操作,请尝试进行第二个操作,即number1+number2
,字符之间不要有空格。
并删除scanf("%ld %s %ld")
中的空格。
希望这会有所帮助。