文件操作


  1、文件的概念及分类

1)文件
①为什么要使用文件:保存程序的结果,记录数据
②文件是什么:“文件”值存储在外部介质上数据的集合,这个数据集有一个名称,叫做文件名。
一批数据是以文件的形式存放在外部介质上的。
操作系统是以文件为单位对数据进行管理。
要向外部介质上存储数据也必须先建立一个文件(以文件名作为标志),才能向它输出数据。
2)、文件的分类
①从用户的角度看,文件可以分为普通文件和设备文件两种。
a)普通文件:驻留在磁盘或其他外部介质上的一个有序数据集。可以是源文件、目标文件、可执行程序等
b)设备文件:与主机相联的各种外部设备。如显示器、打印机、键盘等。
通常把显示器定义为标准输出文件,一般情况下在屏幕上显示有关信息就是向标准输出文件输出.如使用的printf/putchar函数.
键盘通常被指定标准的输入文件,从键盘上输入就意味着从标准输入文件上输入数据.如scanf/getchar函数.
②从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。
a)ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。
b)二进制文件时按照二进制的编码方式来存放文件的。

  2、文件操作步骤及原理
1)对文件的操作步骤:
①引入头文件<stdio.h>
②定义文件指针
③打开文件
④文件读写
⑤关闭文件
2)对文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数:
字符读写函数:fgetc和fputc
字符串读写函数:fgets和fputs
数据块读写函数:fread和fwrite
格式化读写函数:fscanf和fprintf
使用以上函数都需要包含头文件<stdio.h>
3)文件操作原理
①文件缓冲区
系统自动在内存为程序中每一个正在使用的文件开辟一个文件缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘区。
      ②输入输出流
输入输出是数据传送的过程,数据如流水一样从一处流向另一处,因此常将输入输出形象的称为流(stream),即数据流。流表示了信息从园到目的地端的流动。
输入操作时,数据从文件流向计算机内存--文件的读取
输出操作时,数据从计算机流向文件--文件的写入。
无论是用word打开或保存文件,还是C程序中的输入输出都是通过操作系统进行的“流”是一个传输通道,数据可以从运行环境流入程序中,或从程序流至运行环境。


  3、C语言文件指针
1)c语言文件指针
在C语言中用一个指针变量指向一个文件,这个指针成为文件指针。
声明FILE结构体类型的信息包含在头文件“stdio.h”中
一般设置一个指向FILE类型变量的指针变量,然后通过它来引用这些FILE类型变量通过文件指针就可以对它所指向的文件进行各种操作
2)一般格式:
FILE *指针变量标识符
其中FILE应为大写,它实际上是由系统定义的一个结构体,该结构中含有文件名、文件状态和文件当前位置信息。在编写源程序时不必关心FILE结构的细节。
例如:FILE *fP;
表示fp是指向FILE结构体的指针变量,通过fp即可找到存放某个文件信息的结构变量,然后按结构变量提供的信息找到该文件,实施对文件的操作。习惯上也笼统地把fp称为指向一个文件的指针。

  4、文件的打开和关闭
文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其他操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。
1)文件的打开(fopen函数)
fopen函数用来打开一个文件,其调用的一般形式为:
文件指针变量名=fopen(文件名,使用文件方式)
其中:
文件指针名:必须是被说明为FILE类型的指针变量
文件名:是被打开iad文件名
使用文件方式:是指文件的类型和操作要求
文件名:是字符串常量或字符串数据。
例如:FILE *fp=NULL;
 fp=fopen("a.txt","r");//r表示读文件
其意义是在当前目录下打开文件a.txt,只允许进行"读"操作,并使fp指向该文件。
2)文件关闭函数(fclose函数)
文件一旦使用完毕,应用关闭文件函数把文件关闭,以避免文件的数据丢失等错误。
fclose函数调用的一般形式为:
fclose(文件指针)
例如:
close(fp);
正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。
注意:如果文件写操作时,没有进行关闭,可能会导致文件写入失败。

  5、文件的使用方式及注意事项
1)文件使用方式
r:打开一个已存在的问及那、准备从文件中读取数据。不能向文件写数据。
w:创建一个新文件,准备向文件写入数据。不能从文件中读取数据。如果文件已经存在,这个文件将被覆盖(先删后建)。
a:打开一个已经存在的文件,准备在文件尾部追加数据。不能从文件中读取数据。如果文件不存在,则创建这个文件准备写入数据。
r+:打开一个已经存在的文件,准备读写。既可以读取数据,也可以写入数据。
w+:创建一个新文件,准备读写。如果文件已经存在,则覆盖源文件。
a+:等价于a,但可从文件中读取数据。
t:打开一个文本文件。
b:打开一个二进制文件。
2)文件使用方式注意事项
①文件使用方式由r、w、a、t、b和+六个字符拼成,其各自的含义是:
r(read):读
w(write):写
a(append):追加
t(text):文本文件
b(banary):二进制文件
+:读和写
②凡用"r"打开一个文件时,该文件必须是已经存在的,且只能从该文件读出。
③用"w"打开的文件只能向该文件写入。若打开的文件不存在,则以制定的文件名建立该文件,若打开的文件已经存在,则将该文件删除,重建一个新文件。
④若要向一个已存在的文件追加新的信息,只能用"a"方式打开文件。如果文件不存在,也会自动帮我们创建。
⑤在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判断是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:
FILE *fp =fopen("a.txt","r");
if(fp!=NULL){
//文件打开成功
}else{
//文件打开失败
printf("文件读取失败!按任意键退出!\n");//等待用户输入一个字符后再退出
exit(1);//程序退出
}
⑥把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间。对二进制文件的读写不存在这种转换。
⑦标准输入文件(键盘),标准输出文件(显示器),标准出错输出(出错信息)是由系统打开的,可直接使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值