文件的输入和输出:流和缓冲区的概念和文件操作函数总结

本文介绍了流和缓冲区的概念,流是数据的源或目的地,提供了一种可移植的读写方式。缓冲区位于流与设备之间,用于减少I/O操作次数。缓冲区分为全缓存、行缓存和无缓存三种类型。文章还详细讲解了C语言中的文件操作函数,如fopen、fclose、fflush等,以及如何通过setvbuf和setbuf控制缓冲区行为。
摘要由CSDN通过智能技术生成

流和缓冲区的概念理解

  • 流(stream)

    A stream is a source or destination of data that may be associated with a disk or other peripheral.

    流(stream)是与磁盘或其它外围设备关联的数据的源或目的地。

    Streams are a portable way of reading and writing data. They provide a flexible and efficient means of I/O. A Stream is a file or a physical device (e.g. printer or monitor) which is manipulated with a pointer to the stream.

    流是(表达)读写数据的一种可移植的方法,它为一般的I/O操作提供了灵活有效的手段。一个流是一个由指针操作的文件或者是一个物理设备,而这个指针正是指向了这个流。

    C语言中stdin、stdout、stderr分别是标准输入流、标准输出流及标准出错流

  • 缓冲区(buffer)

    缓冲区存在于流与具体的设备终端或者存储介质上的文件之间。

    标准I / O提供缓存的目的是尽可能减少使用read和write调用的数量。

    它也对每个I / O流自动地进行缓存管理。

    标准I / O提供了三种类型的缓存:全缓存、行缓存、无缓存。

    (1)全缓存。在这种情况下,当填满标准I / O缓存后才进行实际I / O操作。对于驻在磁盘上的文件通常是由标准I / O库实施全缓存的。在一个流上执行第一次I / O操作时,相关标准I / O函数通常调用malloc获得需使用的缓存。

    (2)行缓存。在这种情况下,当在输入和输出中遇到新行符时,标准I / O库执行I / O操作。这允许我们一次输出一个字符(用标准I/O fputc函数),但只有在写了一行之后才进行实际I / O操作。

    (3)不带缓存。标准I / O库不对字符进行缓存。如果用标准I / O函数写若干字符到不带缓存
    的流中,则相当于用w r i t e系统调用函数将这些字符写至相关联的打开文件上。标准出错流stderr通常是不带缓存的,这就使得出错信息可以尽快显示出来,而不管它们是否含有一个新行字符。

    ANSI C要求下列缓存特征:
    (1) 当且仅当标准输入和标准输出并不涉及交互作用设备时,它们才是全缓存的。
    (2) 标准出错决不会是全缓存的。

    涉及缓

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值