zoukankan      html  css  js  c++  java
  • 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:原理在哪?

    预则立,不预则废
  • 相关阅读:
    EZOJ #202
    EZOJ #201
    p5156 [USACO18DEC]Sort It Out
    p4363 [九省联考2018]一双木棋chess
    p2150 [NOI2015]寿司晚宴
    p5155 [USACO18DEC]Balance Beam
    p2414 [NOI2011]阿狸的打字机
    实验室断网的解决方案
    人需要看到未来
    门德尔松--罗辑思维
  • 原文地址:https://www.cnblogs.com/awheat/p/12183000.html
Copyright © 2011-2022 走看看