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:原理在哪?

预则立,不预则废
原文地址:https://www.cnblogs.com/awheat/p/12183000.html