874复习-文件

32 篇文章 2 订阅

文件的概念

文件时存储在外部介质(可以是磁盘、磁带、光盘等)上数据的集合,是操作系统数据管理的单位。操作系统对外部介质上的数据是以文件形式进行管理的。也就是说,要想读取外部存储介质中的数据,必须首先按照文件名找到相应的文件,然后再从文件中读取数据。要想将数据存放到外部存储介质中,首先要在外部存储介质上建立一个文件,然后再向文件写入数据。

C语言中使用数据文件的目的在于

(1)数据文件的改动不会引起程序的改动,即程序与数据分离
(2)不同程序可以访问同一数据文件中的数据,即数据共享
(3)能长期保存程序运行的中间数据或结果数据

文件的类别

文本文件

二进制文件

文件操作概述

读文件:是将磁盘文件中的数据传送到计算机内存的操作
写文件是从计算机内存向磁盘文件中传送数据的操作

构成文件的基本单元与流式文件

C语言将文件看作是由一个一个的字符或字节组成的
文件中不存在其他更复杂的数据类型和结构,对文件数据的解释完全看程序本身。我们把按这种方式处理的文件称为流式文件。
组成文件的基本单位是记录
对文件按操作的基本单位也是记录

C语言本身没有提供输入输出的功能,必须通过调用标准库函数进行文件读写

缓冲文件系统

缓冲文件系统是系统自动地在内存区为每个正在使用的文件开辟一个缓冲区。从内存向磁盘输出数据时,必须首先在数据输出到输出的文件缓冲区古中,待输出文件缓冲区装满后,再一起输出到磁盘文件中;

文件指针

C语言程序在操作文件的过程中,必须保存有关文件的一些信息,比如文件名,文件的状态,当前读写的位置等。
C语言将这些信息保存在一个文件结构中,在Borland C++的stdio.h文件中将这个结构体类型定义为FILE

C语言标准库函数每操作一个文件,都为这个文件建立一个FILE型变量。
利用C语言中有关文件操作库函数来操作文件时就可以将文件底层操作的细节与程序员隔离开,使具有文件操作的程序更容易编写

文件类型指针

C语言按照流式文件方式操作文件的过程中要用到上述文件结构所定义的指针,即文件指针。
但程序员只能获取FILE型的指针,这个指针所指向的FILE型变量存放着操作文件的基本信息。这个FILE指针又称为文件类型指针。
每个文件类型指针代表唯一一个文件

文件的打开、读写和关闭

C语言程序在操作文件时必须遵从“打开-读写-关闭”的操作流程。

文件的打开与关闭
C语言打开文件要调用fopen函数。
FILE *fopen (char *filename, char *mode);

(1)filename是一个字符串,表示要打开的文件名,文件名前面可以加上该文件所在的磁盘路径
(2)mode也是一个字符串,表示打开文件的方式。其由两类字符构成,一类字符表示打开文件的类型,t表示文本文件(text),b表示二进制文件(binary),如果不指定文件类型,则默认为文本文件;另一类字符表示操作类型,r表示二进制文件(read),w表示向文件写入数据(write),a表示在文件尾追加数据(append),+表示对文件可读可写。

r:打开一个已存在的文件,准备从文件中读取数据。不能向文件写数据
w:创建一个新文件,准备向文件写入数据。不能从文件中读取数据。如果文件已经存在,这个文件将被覆盖
a:打开一个已存在的文件,准备在文件尾部追加数据。不能从文件中读取数据。如果文件不存在,则创建这个文件准备写入数据。
r+:打开一个已存在的文件,准备读写。既可以读取数据,也可以写入数据
w+:创建一个新文件,准备读写。如果文件存在,则覆盖原文件
a+:等价于a,但可从文件中读取数据
t:打开一个文本文件
b:打开一个二进制文件

(3)功能-按指定方式打开文件
(4)返回值-如果文件打开成功,则返回该文件的指针,如果打开失败(例如,以读方式打开不存在的文件,以写方式打开文件时不能创建文件),则返回NULL

关闭文件

C语言关闭文件要调用fclose函数。这个函数的原型
int *fclose (FILE *filepointer);

(1)filepointer:文件指针,通常这个参数就是fopen函数的返回值
(2)功能-关闭文件指针filepointer所指向的文件
(3)返回值-如果正常关闭了文件,则函数返回值为0,否则,返回值为非0

文件的读写

在C语言中提供了多种文件读写的函数,这些函数主要包括
字符读写函数:fgetc和fputc
字符串读写函数:fgets和fputs

数据块读写函数:fread和fwrite
格式化读写函数:fscanf和fprintf

字符读写函数fgetc和fputc

字符读写函数fgetc和fputc是以字符(字节)为单位的进行文件读写的函数。每次可以从文件读出或向文件写入一个字符

(1)fgetc函数原型:
int fgetc(FILE *filepointer);

功能:从文件指针filepointer所指向的文件中,读取一个字节(字符)的数据,同时将读写位置指针向前移动一个字节(即指向下一个字符)
返回值:如果读取正常,返回读到的字节值,如果读到文件尾或出错,则返回EOP(其值在头文件stdio.h中被定义为-1)

(2)fputc函数原型
int fputc(int c,FILE *filepointer);

功能:将形参c表示的字符数据输出到文件指针filepointer所指向的文件中去,同时将读写位置指针向前移动一个字节(即指向下一个写入位置)
返回值:如果输出成功,则函数返回值就是输出的字符数据c,否则,返回EOF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向上Claire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值