C语言学习—文件

                                                                   文 件

文件的概念:所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,即文件名。

②文件通常是驻留在外部介质(如磁盘)上的,在使用时才调入内存中来。

文件缓冲区的概念:1)文件缓冲区是内存中的一块区域,用于进行文件读写操作时数据的暂存。在计算机系统中,数据是从内存中的程序数据区到文件缓冲区暂存,当缓冲区放满后,数据才被整块送到外存储器上的文件中。

2)磁盘的存取单位是“块”。

3)设立缓冲区的目的:提高效率!  有文件缓冲区可以减少和磁盘打交道的次数。

④文件的打开与关闭:

(1)文件的打开 fopen()函数。调用形式: 文件指针名=fopen(文件名,打开文件方式)

eg:    FILE *fp;

           fp=fopen("file1","r");

其中:“文件指针名”必须是说明为FILE类型的指针变量。                  

          “打开方式”如下表所示:


(2)文件的关闭 fclose()函数。文件一旦使用完毕,应及时关闭,避免文件写数据时,未将缓冲区充满,因而未上传到磁盘上,造成数据的丢失。fclose()函数强制系统将缓冲区中的所有数据送到磁盘。

调用形式:fclose(文件指针)    eg:fclose(fp);


⑤文件顺序读写:

  1)读字符函数     fgetc()     

  调用形式:字符变量=fgetc(文件指针);  eg:ch=fgetc(fp); 意义:从fp指向的文件中读取一个字符 并送入ch变量中 。

  2)写字符函数     fputc()

  调用形式:fputc(字符量,文件指针);     eg:fputc('a',fp); 意义:把字符a写入fp所指向的文件中 。

  3)读字符串函数  fgets()        

  调用形式:fgets(字符数组名,n,文件指针)  eg:fgets(str,n,fp); 意义:从fp所指的文件中读出n-1个字符送入字符数组str中。

  4)写字符串函数  fputs()

  调用形式:fputs(字符串,文件指针)       eg:fputs("abcd",fp); 意义:把字符串“abcd”写入fp所指的文件之中。

  5)格式化读函数  fscanf()        /*fscanf函数与fprintf函数与scanf和printf函数功能相似,区别在于scanf和printf的读写对象

  6)格式化写函数  fprintf()          是盘和显示器,而fscanf和fprintf读写对象是磁盘文件。*/


⑥:文件的随机读写

 文件的顺序读写是指读写文件只能从头开始,但实际问题中,有时需要只需文件的某一指定部分。进而来到文件的随机读写。

1)文件定位

  为了准确控制文件中的读写位置,C语言为每个文件在打开操作时,在文件结构体中设有一个读写位置指针,这个指针指示着当前读写位置。在文件打开的初始状态,一般这个指针都指向文件的开始处(但若以追加的方式打开,是指向文件的末尾处),随着文件的读写,这个指针会自动移动。

移动文件内部指针的函数有两个:

rewind()函数    关于rewind()函数,详见我的另一篇博客《C语言中的rewind()函数

fseek()函数      调用形式:fseek(文件指针,位移量,起始点);

2)随机读写函数

fwrite()    调用形式: fwrite(buffer,size,count,fp);  意义:以buffer为首地址,连续n个size大小的数据块写入fp所指的文件中。

fread()     调用形式: fread(buffer,size,count,fp);

其中:buffer:是一个指针,是读入数据存放的内存起始地址。

          size:要读写的字节数,一般由含sizeof运算符的表达是给出。

          count:要进行读写多少个size字节的数据项。

 ·fwrite()和fread()函数在调用成功时,返回函数值为count(输入/输出数据项个数)的值,如果调用失败(输入/输出出错),则返回0值。

·利用fread()和fwrite()函数还可从二进制文件中读写结构体类型的数据

eg:  struct person

{

   char name[20];

   char sex;

   int age;

   float salary;

}teacher;

fwrite(&teacher,sizeof(struct person),1,fp);


小结:

1. C系统把文件当作一个“流”,按字节进行处理。

2. C文件按编码方式分为二进制文件和ASCII文件。

3. 文件可按字节,字符串,数据块为单位读写,文件也可按指定的格式进行读写。

4. 文件内部的位置指针可指示当前的读写位置,移动该指针可以对文件实现随机读写。

猜你喜欢

转载自blog.csdn.net/weixin_42153410/article/details/80374252
今日推荐