printf和scanf的几点新发现
1、关于printf的缓存刷新问题。
https://blog.csdn.net/h___q/article/details/82469598
printf()语句在打印在屏幕之前,需要把输出发送到一个叫作缓冲区(buffer)的中间存储区域。
待打印的内容放入缓冲区后,需要刷新之后才能打印出来。当缓冲区满、遇到换行字符或者需要输入的时候(从缓冲冲区把数据发送到屏幕或文件被称为刷新缓存区)。
2、关于scanf()的读问题。
scanf()按照转换说明,将除了空格、换行、制表符(tab)外的对应字符读取(字符读取除外),直到遇到非对应字符停止读取,计算值然后赋给变量。
3、我遇到的问题是如下程序:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main(void) { char ch; scanf("%c",&ch); while (ch != 'g') { printf("%c", ch); scanf("%c", &ch); } return 0; }
在输入队列中依次读取,之后连续打印出来。
结果输出如下:
Go west,young man!
Go west,youn
scanf()在whlie循环下不断依次从屏幕中取字符,放入printf()队列中,最后统一输出。
Q:原理在哪?
预则立,不预则废