c语言大一学的,说实话后来就很少用了,第一本人编码少,第二活动多使用python或其他语言,所以忘了许多东西
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//输入2 c
//有点东西,我也没太懂,拉了
int main()
{
int a;
char c,b;
do
{
scanf("%d",&a);
//b=getchar();
scanf("%c",&c);
printf("a=%d c=%c\n",a,c);
//printf("c=%d\n",c);
}while(c!='N');
return 0;
}
// 输入
2 c
如上代码输入2 c你觉得会出现什么?能得到你想要的结果吗?
结果如下
其实我觉得好多小伙伴都知道要隐掉getchar()那一行加上,去吃掉空格。但对于不加getchar()得结果你是不是还会感到意外。
就题论题,scanf会读到空格停止,将2读给b,但空格依然留在缓冲区,所以第一个输出的c是空格,不信可以将c按照整数输出,得到32,输入区还有数据且c不等于N,会继续读,缓冲区还有一个字母c,c不是数字所以%d没有读入东西,字母c被赋值给变量c,这里还是挺有趣的。
确实挺简单点东西,水个程序员节,发篇文章。