文件---

文件---,第1张

文件---

一、文件的基本概念

1.文件概述:“文件”一般是指存储在外部介质上的一组数据的有序集合。c语言将文件看作是字符(字节)序列,即一个一个字符(字节)的数据舒徐组成。

文件名的一般形式为:文件名主干.扩展名

2.文件的分类

1)从用户的角度来看,文件可分为普通文件和设备文件。

普通文件是指驻留在外部介质上的一个有序数据集,可以是程序,也可以是一组待输入处理的原始数据,或者是一组输出的结果

设备文件是指与主机相连的各种外部设备。

2)按文件存储数据的内容来分,文件可分为程序文件和数据文件

程序文件存储的是程序。数据文件存储的是程序运行时所需要的数据

3)按文件中数据的存储方式来分,可分为文本文件(ASC||文件)和二进制文件

文本文件指的是由字符组成的文件,字符可以是字母、数字、运算符等,每个字符通过相应的编码存储在文件中。

3.缓冲文件系统

c语言提供了“缓冲文件系统”和“非缓冲文件系统”两套文件 *** 作函数来存取文件。

缓冲文件系统又称为标准文件系统。当使用标准I/O函数时,系统会自动在内存中为程序每一个正在使用的文件开辟一个“缓冲区”,作为程序与数据文件之间数据交换的媒介。在读文件时,数据先被送到内存“缓冲区”,再从内存“缓冲区”将数据传递到程序数据区;当写文件时,首先将数据送到“缓冲区”,再从内存“缓冲区”将数据送到外部存储介质的指定文件中

二、文件的 *** 作流程(缓冲文件系统)

1.定义文件类型指针:是一个指向有关信息的指针

FILE* 指针变量
例如:
FILE*fp;其含义是文件指针fp所指的是一个名为FILE的结构体类型

2.打开文件

“打开文件”是建立用户程序与文件的联系,系统为文件开辟文件缓冲区。

执行打开文件 *** 作是由库函数 fopen 完成。打开文件 *** 作是指为文件建立相应的信息区(用来存放有关文件的信息)和文件缓冲区(用来暂时存放输入输出的数据)。

在编写程序时,通常定义文件指针与打开文件同时进行,这样,在打开文件的同时,就指定了一个指针变量指向该文件,也就建立起指针变量与文件之间的联系,进而可以通过该指针变量对文件进行读写

3.读写 *** 作

1)文件读写位置标记:在c语言中,系统为每个文件设置了一个文件读写位置标记,用于指向当前的读写位置。文件读写位置标记的初始值可以按照用户所要进行的 *** 作自动初始化。

2)顺序读写方式与随机读写方式

打开文件,当要进行读或写时,文件读写位置标记的初始值为文件首。

顺序读写,指从文件首开始按顺序依次读写,每进行一次读或写,文件读写位置标记都会自动加1,指向下一个字符位置,为下次的读或写做准备,这种方式多用于文本文件。

随机读写,是允许人为地移动文件读写位置标记,将读写位置标记定位到指定位置,然后直接读写,这种方式多用于二进制。

三、文件的打开与关闭

1.文件的打开

c语言中文件的打开可通过系统提供的 fopen 函数实现,其函数调用的形式为:

文件指针名=fopen("文件名","使用文件方式");

1)文件指针名:文件指针名必须是被说明为FILE类型的指针变量。fopen函数在执行时返回一个FILE类型的指针,通常赋给一个文件指针变量。

例如:

FILE *fp;
fp=fopen("file a","r");

其含义时在当前目录下打开文件file a,并使fp指向该文件,fp与被打开的文件建立了联系,其后对文件的读写 *** 作就可以通过fp来进行。

2)文件名:是被打开文件的文件名,包含路径和文件名两部分

例如:

FILE *fp;
fp=("d:\abc.txt","r");

其含义是打开d盘根目录下 的abc.txt文件

3)使用文件方式:

“使用文件方式”的取值含义r

以只读方式,打开一个文本文件。只读不写。该文件必须存在,不存在时返回错误标识

w

以只写方式,创建并打开一个文件。只写不读。文件不存在时建立新文件,存在时,原文件被覆盖。a以追加的方式打开一个文本文件。只写。文件存在时打开文件,只能从文件尾追加数据,原内容被覆盖;不存在时建立新文件r+以读/写的方式打开一个文本文件。只读和写。该文件必须存在,不存在则返回错误标识w+

以读/写的方式建立一个新的文本文件。允许读和写。文件存在时打开文件,原文件清空;不存在则建立新文件

a+以追加的方式打开可读/写的文本文件。允许读和写。文件不存在则建立新文件;文件存在可以从文件中读取或往文件中写入数据,写入的数据会被加到文件尾后rb,wb,ab,rb+,wb+,ab+与上述一样,只是打开的是二进制文件

a.使用文件方式的取值

r(read):读取数据

w(write):写入数据

a(append):追加数据

t(text):文本文件,可省略不写

b(binary):二进制文件

+:可读取和写入

b.在打开一个文件时,如果出错,fopen函数将返回一个空指针值NULL。在程序中可以使用这一信息来判别是否完成打开文件的工作,并做出相应的处理,因此常用以下程序段打开文件:

if((fp=fopen("c:\student.txt","rb")==NULL)
{
    printf("n error on open c:\ student.txt file !");
    exit(1);
}
        

2.文件的关闭

关闭文件可通过fclose函数实现,其调用形式为:

fclose(文件指针);

关闭文件就是使原来指向该文件的文件指针与文件脱离,以便再使用该文件指针时,不会对该文件进行读写 *** 作,除非再次打开文件。

fclose函数的返回值有0和非0两种。正常完成关闭文件 *** 作时,fclose函数返回值为0;如返回非0值则表示文件关闭失败。

三、文件的顺序读写

1.按字符读写文件(以字符为单位)

1)写字符函数:fputc,调用形式为:

fputc(字符量,文件指针);   //把“一个”字符写入文件指针所指的文件中

a.参数“字符量”时要输入的字符,它可以说时一个字符常量,也可以是一个字符变量

b.每写入一个字符,文件读写位置标记向后移动一个字节

c.文件指针和文件读写位置标记的区别:文件指针是指向整个文件的,必须再程序定义中说明;文件读写位置标记用以指向文件内部的当前读写位置。

d.fputc函数有一个返回值,写入成功正确返回写入的字符,否则返回EOF(是stdio.h库函数文件中定义的符号常量,指为-1)

2)读字符函数:fgetc,调用形式为:

字符变量=fgetc(文件指针);  //从文件指针所指向的文件中读一个字符

a.在fgetc函数调用中,读取的文件必须是以读或读写的方式打开

2.按字符串读写文件

1)写字符串函数:fputs,调用形式:

fputs(字符串,文件指针);  //将字符串写入文件指针所指的文件中

a.fupts函数有返回值:写入成功返回正整数,否则返回EOF

b.字符串结束符补被写入文件。为了读取数据方便,设法使字符串分开,常常用fputs(“n”,fp)的语句在每个字符串后面加一个换行符存入文件中

2)读字符串函数:fgets,调用形式为:

fgets(字符数组,n,文件指针);  //从文件指针所指的文件中读取一个字符串到字符数组中

例如:fgets(str,n,fp);  其含义使从fp所指的文件中读出n-1个字符送入字符数组str中

a.该函数从文件指针所指的文件中,读取的字符串补超过n-1个字符。当读满n-1个字符前,若遇到换行符或文件结束符(EOF),函数停止读 *** 作,并在字符串的最后一个字符后加上一串结束符“”。需要注意的是,如果遇到换行符,fgets函数将换行符也作为字符串的一部分读取

b.fgets函数的返回值是字符数组的首地址。若读取失败,则额返回空指针NULL

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5704155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存