当前位置:
文档之家› c语言程序设计教程第10章文件
c语言程序设计教程第10章文件
程序 输入文件缓冲区 缓冲文件系统: 非缓冲文件系统: 指令区 程序数据区 用户数据区 a 磁盘文件 磁盘
输出文件缓冲区 缓冲区
广西工学院
10.1.2 文件类型指针
文件结构体FILE
缓冲文件系统为每个正使用的文件在内存开辟文件信 息区 文件信息用系统定义的名为FILE的结构体描述 FILE定义在stdio.h中
typedef struct { int _fd; int _cleft; int _mode; char *_next; char *_buff; }FILE;
//文件号 //缓冲区中剩下的字符数 //文件操作方式 //文件当前读写位置 //文件缓冲区位置
广西工学院
文件类型指针
有了结构体FILE类型之后,可以用它来定义若干个FILE类型的变 量,以便存放若干个文件的信息。 例如,可以定义以下FILE类型的数组.FILE f[5];定义了一个结构 体数组f,它有5个元素,可以用来存放5个文件的信息. 可以定义文件型指针变量.
例2 FILE *fp; char *filename=“c:\\fengyi\\bkc\\test.dat” fp= fopen(filename,”r”);
例3 文件打开与测试 FILE *fp; fp=fopen(“aa.c”,“w”); if(fp==NULL) { printf(“File open error!\n”); exit(0); }
指针变量定义: FILE *fp; 说明:
fp是一个指向FILE类型结构体的指针变量。可以使fp指向某 一个文件的结构体变量,从而通过该结构体变量中的文件信 息能够访问该文件。也就是说,通过文件指针变量能够找到 与它相关的文件。如果有n个文件,一般应设n个指针变量(指 向FILE类型结构体的指针变量),使它们分别指向n个文件(确 切地说指向存放该文件信息的结构体变量),以实现对文件的 访问。
广西工学院
10.2.1 文件打开(fopen函数)
C文件操作用库函数实现,包含在stdio.h 文件使用方式:打开文件-->文件读/写-->关闭文件 系统自动打开和关闭三个标准文件:
标准输入------键盘 标准输出------显示器 标准出错输出-----显示器 stdin stdout stderr
使用数据文件的目的 文件分类
1、数据文件的改动不引起程序的改动——程序与数据分离 按文件的逻辑结构: 2 、不同程序可以访问同一数据文件中的数据 ——数据共享 3、能长期保存程序运行的中间数据或结果数据 记录文件:由具有一定结构的记录组成(定长和不定长) 流式文件:由一个个字符(字节)数据顺序组成
广西工学院
10.2.2
文件关闭fclose
作用:使文件指针变量与文件“脱钩”,释放文件结构 体和文件指针 函数原型:int fclose(FILE *fp)
功能:关闭fp指向的文件 返值:正常关闭为 0;出错时,非0 文件打开时返回的文件类型指针
缓冲文件系统:
不关闭文件可能会丢失数据
磁盘文件
广西工学院
文件类型指针
用法:
文件打开时,系统自动建立文件结构体,并把指向它的指针 返回来,程序通过这个指针获得文件信息,访问文件 文件关闭后,它的文件结构体被释放 文件名 C程序 文件使用 方式 文件类型指针 操作系统
磁盘
广西工学院
§ 10.2 文件的打开与关闭
当需要对一个磁盘文件进行读写之前, 须首先“打开”文件,文件只有被打开之 后,才能对它进行读写操作。在文件使用fopen
函数原型: FILE *fopen(char *name,char *mode) 要打开的文件名 功能:按指定方式打开文件 返值:正常打开,为指向文件结构体的指针;打 开失败,为NULL
广西工学院
文件使用方式 “r/rb” (只读) “w/wb” (只写) “a/ab” (追加) “r+/rb+” (读写) “w+/wb+” (读写) “a+/ab+” (读写)
主讲 蔡启先
广西工学院
第十章 文件
10.1 10.2 10.3 10.4 10.5 10.6 文件概述 文件的打开与关闭 文件的读写操作 文件的定位 出错检测 综合示例
广西工学院
§ 10.1 文件概述 10.1.1 C语言操作文件
文件:存储在外部介质上数据的集合,是操作系统对数据 进行存储和管理的一种形式。
按存储介质:
普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等)
按数据的组织形式:
文本文件: ASCII文件,每个字节存放一个字符的ASCII码 二进制文件:数据按其在内存中的存储形式原样存放
广西工学院
文本文件特点: 存储量大、速度慢、便于对字符操作
输入文件缓冲区 程序数据区 a
输出文件缓冲区
广西工学院
fclose
§ 10.3 文件的读写操作
文件一经打开,即可对其进行读写操作。 C语言通常以一批文件操作函数实现对文件 的读写操作,这些函数被定义在 stdio.h 头文 件中,所以使用这些函数必须首先包含( # include ) stdio.h 头文件。下面就一些最常用 的文件操作函数及其调用方法予以讨论。
含义 为输入打开一个文本/二进制文件 为输出打开或建立一个文本/二进制文件 向文本/二进制文件尾追加数据 为读/写打开一个文本/二进制文件 为读/写建立一个文本/二进制文件 为读/写打开或建立一个文本/二进制文件
广西工学院
例1 FILE *fp; fp= fopen (“c:\\fengyi\\bkc\\test.dat”,”r”);
如 int型数10000
ASCII形式
0011000100110000001100000011000000110000
0010011100010000 0010011100010000
内存存储形式
二进制形式
二进制文件特点: 存储量小、速度快、便于存放中间结果
广西工学院
文件处理方法
缓冲文件系统:高级文件系统,系统自动为正在使用 的文件开辟内存缓冲区 非缓冲文件系统:低级文件系统,由用户在程序中为 每个文件设定缓冲区