zoukankan      html  css  js  c++  java
  • printf函数与缓冲区

    printf函数与缓冲区

    printf函数是一个行缓冲函数,先将内容写到缓冲区,满足一定条件后,才会将内容写入对应的文件或流中。

    基本条件如下:

    1.缓冲区填满
    2.写入的字符中有‘
    ’ '
    '
    3.调用fflush或stdout手动刷新缓冲区
    4.调用scanf等要从缓冲区中读取数据时,也会将缓冲区内的数据刷新
    5.程序结束时

    有以下示例1验证:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 /*argc:命令行输入参数个数,argv:命令行参数 
     5  *argv为字符指针数组,argv[i]为指向第i个命令行参数内容的指针
     6  */
     7 int main(int argc, char **argv){ 
     8     int i;
     9     char a='a';
    10     if(argc != 2) //命令行参数为2,否则出错
    11     {
    12         printf("Usage:%s Number
    ",argv[0]); 
    13         return 0;
    14     }
    15 
    16     for(i=0;i<atoi(argv[1]);i++) //atoi:字符转化为整数
    17     {
    18         printf("%c",a);
    19     }
    20     
    21     while(1);  //让程序一直运行
    22 }

    运行结果:

     说明linux下,printf缓冲区大小为1024字节。while(1)使程序一直运行,当缓冲区未满时,不会输出打印。

    示例2:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     int i;
     6     for(i=0; i<10; i++)
     7     {
     8         printf("a");
     9         fflush(stdout); //参数为文件指针
    10     }
    11     while(1);
    12     return 0;
    13 }

    没进行流刷新之前

    流刷新fflush之后

  • 相关阅读:
    USACO 3.3 A Game
    USACO 3.3 Camelot
    USACO 3.3 Shopping Offers
    USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解
    USACO 3.3 Riding the Fences
    USACO 3.2 Magic Squares
    USACO 3.2 Stringsobits
    USACO 3.2 Factorials
    USACO 3.2 Contact
    USACO 3.1 Humble Numbers
  • 原文地址:https://www.cnblogs.com/y4247464/p/12024742.html
Copyright © 2011-2022 走看看