//1、scanf来读取输入数据时会阻塞,因为标准缓冲区为空。
//2、scanf用来读取标准输入,scnaf把标准输入内的内容,需要放到某个变量空间里,因此变量必须取地址。
/*3、
scanf在读取整数数据时,会读取到《整数》+\n,如果,有多个scanf那么\n就会存入下一个scanf
这个时候下一个scanf自动有一个《\n》的值。系统不在阻塞,直接输出\n,
《解决办法》我们在输出完,在下一个scanf之前要《清除》标准缓冲区,然后达到第二个阻塞效果
*/
/*
4、我们知道《字符型》 有多个scanf时,要清除标准缓冲区,但是 《整形》《浮点型》《字符串》
读取的时候会自动清除或忽略\n或者空格等字符。
*/
/*5、
如果我们要连续输入值,例子:scanf("%d%c%f",&d&c&f),因为我们的<字符型>会识别输入数据的任何字符,
所以我们可以改改scanf格式,例子:scanf("%d %c%f",&d,&c,&f)就是%c前加空格。
*/
int main() {
int d; //地址容器
char c;
scanf("%d",&d); //把标准缓冲区的整形数读走。
printf("d=%d\n",d); //输出整数i的值
fflush(stdin); // 清空标准输入缓冲区
scanf("%c",&c);
printf("c=%c",c);
}
int main() {标签:读取,int,scanf,标准,缓冲区,原理,输入 From: https://blog.51cto.com/u_16003115/6120577
int d; //地址容器
char c;
float f;
scanf("%d %c%f",&d,&c,&f); //%c前面加空格
printf("d=%d,c=%c,f=%5.2f",d,c,f);
}