C语言 FILE文件指针

来源:互联网 发布:sql distinct用法 编辑:程序博客网 时间:2024/06/06 08:46

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时则会真正的将内存中的数据写入到磁盘文件中去。以提高效率,避免过于频繁写入所引起的效能低下和减少磁盘寿命。

0 0
原创粉丝点击