C语言 文件

文件:记录在外部介质上的数据的集合,这个数据集有一个名称,叫做文件名

使用数据文件的目的:

1.数据文件的改动不引起程序的改动——程序与数据分离。

2.不同程序可以访问同一数据文件中的数据——数据共享。

3.能长期保存程序运行的中间数据或结果数据。

“输入”或“读”:从外部文件中得到数据给程序使用

“输出”或“写”:把程序中数据输出到外部文件中

文件存储方式:顺序存取和直接存取。

顺序存取:每当打开这类文件时,进行读或写操作时,总是从文件的开头开始,从头到尾地读或写。

直接存取(随机存取):可以通过调用C语言的库函数去指定开始读或写的字节号,然后直接对此位置上的数据进行读,或把数据写到此位置上。

文件可以分为文本文件和二进制文件。

文本文件:当输出时,数据转换成一串字符,每个字符以字符的ASCII码值存储到文件中,一个字符占用一个字节。当输入时,又把指定的一串字符按类型转换成数据。

二进制文件:当输出时,数据不经过任何转换,按计算机内的存储形式直接存放到磁盘上。当输入时,不经过任何转换,而直接将读入的数据存入变量所占内存空间。

文本文件特点:存储量大,转换为二进制速度慢,直观易记,便于对字符操作。

二进制文件特点:存储量小,无需转换,便于存放中间结果。

文件输入或输出的时候,系统将为输入或输出文件开辟缓冲区。

缓冲区是系统在内存中为各文件开辟的一篇存储区。

输出时,数据先填入缓冲区,缓冲区满时才把内容一次性输出到对应文件。

输入时,从输入文件输入一批数据放入缓冲区,输入语句从缓冲区依次读取数据,数据读完时,再从输入文件中输入一批数据放入。

 

文件指针

文件指针实际上是指向一个结构体类型的指针,这个结构体类型名为FILE和stdio.h中。

struct_iobuf
{
    char *_ptr;  //文件输入的下一个位置
    int _cnt;      //当前缓冲区的相对位置
    char *_base; //指基础位置(应该是文件的起始位置)
    int _flag;       //文件标志
    int _file;        //文件的有效性验证
    int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取
    int _bufsiz;   //文件的大小
    char *_tmpfname;  //临时文件名     
};
typedef struct _iobuf FILE;

打开文件

在对文件进行读、写操作之前,首先要解决的问题是如何把程序中要读,写的文件与磁盘上实际的数据文件联系起来。C语言中通过调用fopen来实现。

FILE *fopen(char *)

posted on 2018-08-28 11:35  胖鸟先飞  阅读(200)  评论(0编辑  收藏  举报

导航