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

    预则立,不预则废
  • 相关阅读:
    51Nod 1267 4个数和为0 二分
    51Nod 1090 3个数和为0 set 二分优化
    51Nod 1001 数组中和等于K的数对 Set
    Codeforces 890C
    Codeforces 890B
    Codeforces 890A
    51nod 1058 N的阶乘的长度 位数公式
    C#调用本机摄像头
    读取、写入excel数据
    数据库笔记--基本应用
  • 原文地址:https://www.cnblogs.com/awheat/p/12183000.html
Copyright © 2011-2022 走看看