页次: 1
人机对话方式从键盘输入a、b、c、d四个整数,计算(a+b-c)*d并显示结果。
然后我用scanf可以,用getchar就见了鬼了(我是个菜鸟).
程序如下:
# include<stdio.h>
int main()
{
int a, b, c, d;
printf("Enter a:\n");
a = getchar();
printf("Enter b:\n");
b = getchar();
printf("Enter c:\n");
c = getchar();
printf("Enter d:\n");
d = getchar();
printf("(a+b-c)*d = %d\n", (a + b - c) * d);
}
运行结果是这个样子的
./ex1.8
Enter a:
1
Enter b:
Enter c:
2
Enter d:
(a+b-c)*d = 90
如果采用下面的scanf就一切正常:
# include<stdio.h>
int main()
{
int a, b, c, d;
printf("Enter a:b:c:d\n");
scanf("%d:%d:%d:%d", &a, &b, &c, &d);
printf("(a+b-c)*d=%d\n", (a +b -c) * d);
}
最近编辑记录 Mesopotamian (2016-05-02 17:18:53)
离线
解决了。
如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。
离线
你的理解稍有偏差,getchar接受所有字符,包括enter键,所以你的enter键也被放在缓冲区了
离线
那个是终端的行缓冲区啦。
离线
页次: 1