美文网首页
IO缓冲区

IO缓冲区

作者: lxr_ | 来源:发表于2021-11-08 17:27 被阅读0次

//为了解决cpu与输入输出(键盘、显示器)设备速度不匹配的问题,设计了IO缓冲区
//标准IO提供三种类型缓冲模式:按块缓存,按行缓存和不缓存
//按块缓存也称为全缓存,即在填满缓冲区后才进行实际的设备读写操作
//按行缓存是指在接收到换行符"\n"之前,数据都是先缓存在缓冲区的
//不缓存,就是允许直接读写设备上的数据

#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
    FILE* fp;
    
    if ((fp = fopen("output.txt", "w")) == NULL)
    {
        perror("打开文件失败的原因是");
    }

    fputs("hello world\n", fp);                 //向文件写入字符串
    getchar();                                  //从终端等待用户输入一个字符,如果用户没有输入而中断程序,fputs写入不会成功,因为先写入了缓冲区

    fclose(fp);                                 //调用fclose函数将缓冲区数据写入文件

    //****************fflush(刷新缓冲区)与setvbuf(设置缓冲区模式)**************
    //下面的例子在linux下可以测试成功,在windows测试不成功
    char buff[1024];
    memset(buff, '\0', sizeof(buff));           //缓冲区填充

    setvbuf(stdout, buff, _IOFBF, 1024);        //设置stdout数据流的缓冲区为buff,大小为1024,缓冲模式为按块缓存,而_IOLBF为按行缓存,_IONBF为不缓存

    fprintf(stdout, "hhhhh");                   //向stdout写入字符串

    fflush(stdout);                             //刷新缓冲区

    fprintf(stdout, "输入任意字符后才会显示改行字符\n");//再往stdout写入数据,而当缓冲模式设置为无缓冲时,不用用户输入字符,该行会先输出到终端
     
    getchar();                                  //从终端接收用户一个输入字符

    system("pause");
    return 0;
}

相关文章

  • 2019-04-30——Java NOI

    经典java IO库 对于经典的IO除了Buffered开头的类,其他均没有加缓冲区,除非手动添加缓冲区 经典io...

  • IO模型

    IO读写 read:把数据从内核进程复制到进程缓冲区 write:把数据从进程缓冲区复制到内核缓冲区 阻塞IO 需...

  • NIO

    传统IO和普通IO的区别 传统IO:面向流,阻塞IO(Blocking), selector NIO:面向缓冲区,...

  • 01Nio-Buffer

    缓冲区的使用 Java IO和NIO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO...

  • NIO学习笔记(1)

    NIO:(New IO/No blocking IO)非阻塞式IO 新特性:面向缓冲区,Channel,Selec...

  • [Java NIO] 缓冲区

    一.缓冲区 2.1 缓冲区 1.概念 缓冲区以及缓冲区如何工作,是所有IO的基础。 所谓输入/输出,无非是把数据移...

  • IO缓冲区

    //为了解决cpu与输入输出(键盘、显示器)设备速度不匹配的问题,设计了IO缓冲区//标准IO提供三种类型缓冲模式...

  • 【JAVA】总结四

    阻塞IO和非阻塞IO 发送端往缓冲区写入数据,当发送端缓冲区数据满了,发送端write就会阻塞,接收端从接收端缓冲...

  • java基础之IO流

    IO流上:概述、字符流、缓冲区(java基础) IO流结构图 FilterInputStream、FilterOu...

  • 笨办法学C 练习44:环形缓冲区

    练习44:环形缓冲区 原文:Exercise 44: Ring Buffer 译者:飞龙 环形缓冲区在处理异步IO...

网友评论

      本文标题:IO缓冲区

      本文链接:https://www.haomeiwen.com/subject/solnaltx.html