C语言 FILE文件指针

struct_iobuf{
        char*_ptr;
        int  _cnt;
        char*_base;
        int  _flag;
        int  _file;
        int  _charbuf;
        int  _bufsiz;
        char*_tmpfname;
        };
typedefstruct_iobufFILE;

_ptr 当前指针,指向文件缓冲区中要写入或读取数据的地址

_cnt 缓冲区中剩余可用空间大小(写文件时); 有效数据剩余大小(读文件时);

_base 缓冲区首地址

_flag 打开文件的标志”r”  “w+” “rb”

_bufsize 缓冲区总大小




C语言对磁盘文件的读写以文件流的方式进行了抽象---说白了就是把文件数据读取到内存中,操作内存就相当于间接操作文件。用fopen函数打开指定路径的文件,其实在不同的操作系统平台下,会调用各自操作系统的文件操作API,以间接实现C语言的跨平台。由于打开或定入文件,不知道文件的大小,所以会在堆中开辟一块相应大小的存储空间。当读取文件时,会先将文件的部分数据写入到这块内存空间中以供程序使用。当文件操作完毕,则会调用fclose关闭文件指针,也就是释放打开文件操作时所分配的堆内存空间,以避免内存泄漏。同理,要将数据写入文件中,也必定要将数据先写入到开辟的缓冲区中,当缓冲区中数据写满或遇到fclose, fflush时则会真正的将内存中的数据写入到磁盘文件中去。以提高效率,避免过于频繁写入所引起的效能低下和减少磁盘寿命。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值