第10章_文件操作
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数调用:
FILE *fp; fp=fopen(文件名,使用文件方式);
说明:
需要打开的文件名,也就是准备访问的文件名; 使用文件的方式(“读”还是“写”等); 让哪一个指针变量指向被打开的文件。
The C Programming Language 15
文件的关闭(fclose函数)
函数调用:
fclose(文件指针);
函数功能:
– 是使位置指针重新返回文件的开头,此函数没有
返回值。
Ex1005.c
The C Programming Language 32
文件位置指针的定位
放地址。对fwrite来说,是要输出数据的地址(均指起始 地址)。 – size:要读写的字节数。 – count:要进行读写多少个size字节的数据项。 – fp:文件型指针。
The C Programming Language 27
向文件读写一组数据示例
例10.4 从键盘输入4个学生的有关数据,然 后把它们转存到磁盘文件上去。
返回值:
– 如果输出成功,则返回值就是输出的字符;如果
输出失败,则返回一个EOF.
The C Programming Language 18
从文件读一个字符
2. fgetc函数从文件读入一个字符. 调用形式:
Ch = fgetc (fp);
函数功能:
– fgetc 函数带回一个字符,赋给ch。
返回值:
返回值:
– 若执行fgets函数成功,则返回值为str数组首元素
的地址 如果一开始就遇到文件尾或读数据出错, 则返回NULL。
The C Programming Language
22
向文件写一个字符串
fputs函数 函数原形
– int fputs(const str, FILE *fp);
函数功能:
C语言程序设计
北京建筑工程学院 Beijing Architecture and Civil Engineering Institute
教学内容
第一章 C语言概述 第二章 数据类型 第三章 顺序结构 第四章 选择结构 第五章 循环结构 第六章 数组 第七章 函数调用 第八章 指针 第九章 结构体与共用体 第十章 文件操作 补充章节 位运算 补充章节 预编译
↑ 文件头 ↑ 读写当前位置 ↑ 文件尾
内容提纲
C文件的有关概念
– 文件的概念 – 文件指针与文件位置指针
文件的打开与关闭
– 文件的打开 – 文件的关闭
文件的顺序读写 文件的随机读写 文件读写的出错检测 文件操作程序举例
The C Programming Language 14
文件的打开(fopen函数)
读写字符举例
例10.2 将一个磁盘文件中的信息复制到另一 个磁盘文件中。
Ex1002.c
The C Programming Language 21
从文件读一个字符串
fgets函数 函数原形
– char *fgets(char *str, int n, FILE *fp);
函数功能:
– 从指定的文件读入一个字符.
– 如果在执行 fgetc 函数读字符时遇到文件结束符,
函数返回一个文件结束标志EOF(即-1)。
The C Programming Language 19
读写字符举例
例10.1 从键盘输入一些字符,逐个把它们送 到磁盘上去,直到输入一个“#”为止。
Ex1001.c
The C Programming Language 20
文件的打开与关闭
– 文件的打开 – 文件的关闭
文件的顺序读写 文件的随机读写 文件读写的出错检测 文件操作程序举例
The C Programming Language 17
向文件写一个字符
1. 用fputc函数向文件写入一个字符 调用形式:
fputc ( ch,fp ) ;
函数功能:
– 将字符(ch的值)输出到fp所指向的文件中去。
函数功能:
– 使文件指针变量不指向该文件,也就是文件指针
变量与文件“脱钩”,此后不能再通过该指针对 原来与其相联系的文件进行读写操作
返回值:
– 关闭成功返回值为0;否则返回EOF(-1)
The C Programming Language 16
内容提纲
C文件的有关概念
– 文件的概念 – 文件指针与文件位置指针
内容提纲
C文件的有关概念
– 文件的概念 – 文件指针与文件位置指针
文件的打开与关闭
– 文件的打开 – 文件的关闭
文件的顺序读写 文件的随机读写 文件读写的出错检测 文件操作程序举例
The C Programming Language 30
文件的随机读写
顺序读写和随机读写 顺序读写:
– 位置指针按字节位置顺序移动。顺序读写容易理
The C Programming Language
8
文件缓冲区
ANSIC标准采用“缓冲文件系统”处理文件 缓冲文件系统:系统自动地在内存区为每一个正在 使用的文件开辟一个缓冲区。 从内存向磁盘输出数据必须先送到内存中的缓冲区, 装满缓冲区后才一起送到磁盘去。
输出文件缓冲区 程序 数据区 输入文件缓冲区
什么是文件
– 所谓文件一般指存储在外部介质(如磁盘磁带)上
数据的集合。 – 操作系统是以文件为单位对数据进行管理的,输 入输出是数据传送的过程,数据如流水一样从一 处流向另一处,因此常将输入输出形象地称为流 (stream),即输入输出流。 – C语言把文件看作是一个字符(字节)的序列, 即由一个一个字符(字节)的数据顺序组成。一 个输入输出流就是一个字节流或二进制流。
说明
注意:
– 用 fprintf 和 fscanf 函数对磁盘文件读写,使用方
便,容易理解,但由于在输入时要将ASCII码转 换为二进制形式,在输出时又要将二进制形式转 换成字符,花费时间比较多。因此,在内存与磁 盘频繁交换数据的情况下,最好不用fprintf和 fscanf函数,而用fread和fwrite函数。
The C Programming Language
10
文件指针
FILE类型的数组:
– FILE
f[5];定义了一个结构体数组f,它有5个元素,可 ; 以用来存放5个文件的信息。
文件型指针变量:
– FILE *fp;fp是一个指向FILE类型结构体的指针变量。 ;
可以使fp指向某一个文件的结构体变量,从而通过该结构 体变量中的文件信息能够访问该文件。 – 如果有n个文件,一般应设n个指针变量,使它们分别 指向n个文件,以实现对文件的访问。
The C Programming Language
11
FILE型指针变量
在标准输入输出库中,系统定义了三个FILE型的指 针变量:
– stdin (标准输入文件指针) 。指向在内存中与键盘相应的
文件信息区,因此,用它进行输入就蕴含了从键盘输入。 – stdout (标准输出文件指针) 。指向在内存中与显示器屏 幕相应的文件信息区,因此,用它进行输出就蕴含了输 出到显示器屏幕。 – stderr (标准错误文件指针),用来输出出错的信息,它也 指向在内存中与显示器屏幕相应的文件信息区,因此, 在程序运行时的出错的信息就输出到显示器屏幕。
解、易操作,但效率不高。
随机读写:
– 读写完上一个字符(字节)后,并不一定要读写
其后续的字符(字节),而可以读些文件中任意 位置上所需要的字符(字节)。
The C Programming Language 31
文件位置指针的定位
C语言提供以下有关函数使位置指针指向指 定的位置:
– (1) rewind函数
The C Programming Language 5
文件名的命名
注意:
– 文件标识被称为文件名,但此时的文件名包括以
上三部分内容,而不仅是文件名主干。 – 文件名主干的命名规则遵循标识符的命名规则。 后缀用来表示文件的性质,一般不超过3个字母。 – 如:.txt (文本文件),.dat (数据文件) , .doc (Word 生成的文件)
The C Programming Language 9
文件
文件类型声明
文件类型声明:
typedef struct { short level; unsigned flags; char fd; unsigned char hold; short bsize; unsigned char *buffer; unsigned ar*curp; unsigned istemp; short token; } FILE; // 缓冲区“满”或“空”的程度 // 文件状态标志 // 文件描述符 // 如无缓冲区不读取字符 // 缓冲区的大小 // 数据缓冲区的位置 // 指针,当前的指向 // 临时文件,指示器 // 用于有效性检查
The C Programming Language
7
ASCII文件和二进制文件的比较
ASCII文件便于对字符进行逐个处理,也便于输出 字符。但一般占存储空间较多,而且要花费转换时 间。 二进制文件可以节省外存空间和转换时间,但一个 字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上,以后又 需要输入内存的,常用二进制文件保存。
The C Programming Language
6
文件的分类
根据数据的组织形式,数据文件可分为ASCII文件 和二进制文件。
– ASCII文件(文本文件):每一个字节放一个ASCII代码。 – 二进制文件:把内存中的数据按其在内存中的存储形式
原样输出到磁盘上存放。 – 例:整数10000在内存中的存储形式以及分别按ASCII码 形式和二进制形式输出如下图所示:
The C Programming Language
12
位置指针
位置指针用来指示当前的读写位置。 一般情况下,在对字符文件进行顺序读写时, 文件的位置指针指向文件开头,这时如果对 文件进行读的操作,就读第一个字符,然后 文件的位置指针顺序向后移一个位置,在下 一次执行读的操作时,就将指针指向的第二 个字符读入。依此类推,直到遇文件尾
The C Programming Language
26
向文件读写一组数据
数据块读写函数(fread()和fwrite()) 函数调用:
– fread (buffer,size,count,fp); – fwrite(buffer,size,count,fp);
参数说明:
– buffer:是一个指针。对fread 来说,它是读入数据的存
– 用fputs函数可以向指定的文件输出一个字符串。
The C Programming Language
23
读写字符串举例
例10.3 从键盘读入若干个字符串,对它们按 字母顺序排序,后把它们送到谚磁盘文件中 保存。
Ex1003.c
The C Programming Language 24
文件的格式化读写
函数调用:
– fprintf ( 文件指针,格式字符串,输出表列); – fscanf ( 文件指针,格式字符串,输入表列);
函数功能:
– 从磁盘文件中读入或输出字符。
例:
– fprintf(fp,”%d,%6.2f”,i,t); – fscanf (fp,”%d,%f”,&i,&t);
The C Programming Language 25
The C Programming Language 4
C文件的有关概念
文件名
– 一个文件要有一个惟一的文件标识,以便用户识别和引
用。文件标识包括三部分: 文件路径: 文件名主干; 文件后缀。 – 文件路径表示文件在外部存储设备中的位置。 如:d: \ cc \ temp \ file1 . dat ↑ ↑ ↑ 文件路径 文件名主干 文件后缀
The C Programming Language 2
内容提纲
ຫໍສະໝຸດ BaiduC文件的有关概念
– 文件的概念 – 文件指针与文件位置指针
文件的打开与关闭
– 文件的打开 – 文件的关闭
文件的顺序读写 文件的随机读写 文件读写的出错检测 文件操作程序举例
The C Programming Language 3
C文件的有关概念
Ex1004_1.c
The C Programming Language 28
向文件读写一组数据示例
验证在磁盘文件“stu-list”中是否已存在此数 据,用以下程序从“stu-list”文件中读入数据, 然后在屏幕上输出。
Ex1004_2.c
The C Programming Language 29
FILE *fp; fp=fopen(文件名,使用文件方式);
说明:
需要打开的文件名,也就是准备访问的文件名; 使用文件的方式(“读”还是“写”等); 让哪一个指针变量指向被打开的文件。
The C Programming Language 15
文件的关闭(fclose函数)
函数调用:
fclose(文件指针);
函数功能:
– 是使位置指针重新返回文件的开头,此函数没有
返回值。
Ex1005.c
The C Programming Language 32
文件位置指针的定位
放地址。对fwrite来说,是要输出数据的地址(均指起始 地址)。 – size:要读写的字节数。 – count:要进行读写多少个size字节的数据项。 – fp:文件型指针。
The C Programming Language 27
向文件读写一组数据示例
例10.4 从键盘输入4个学生的有关数据,然 后把它们转存到磁盘文件上去。
返回值:
– 如果输出成功,则返回值就是输出的字符;如果
输出失败,则返回一个EOF.
The C Programming Language 18
从文件读一个字符
2. fgetc函数从文件读入一个字符. 调用形式:
Ch = fgetc (fp);
函数功能:
– fgetc 函数带回一个字符,赋给ch。
返回值:
返回值:
– 若执行fgets函数成功,则返回值为str数组首元素
的地址 如果一开始就遇到文件尾或读数据出错, 则返回NULL。
The C Programming Language
22
向文件写一个字符串
fputs函数 函数原形
– int fputs(const str, FILE *fp);
函数功能:
C语言程序设计
北京建筑工程学院 Beijing Architecture and Civil Engineering Institute
教学内容
第一章 C语言概述 第二章 数据类型 第三章 顺序结构 第四章 选择结构 第五章 循环结构 第六章 数组 第七章 函数调用 第八章 指针 第九章 结构体与共用体 第十章 文件操作 补充章节 位运算 补充章节 预编译
↑ 文件头 ↑ 读写当前位置 ↑ 文件尾
内容提纲
C文件的有关概念
– 文件的概念 – 文件指针与文件位置指针
文件的打开与关闭
– 文件的打开 – 文件的关闭
文件的顺序读写 文件的随机读写 文件读写的出错检测 文件操作程序举例
The C Programming Language 14
文件的打开(fopen函数)
读写字符举例
例10.2 将一个磁盘文件中的信息复制到另一 个磁盘文件中。
Ex1002.c
The C Programming Language 21
从文件读一个字符串
fgets函数 函数原形
– char *fgets(char *str, int n, FILE *fp);
函数功能:
– 从指定的文件读入一个字符.
– 如果在执行 fgetc 函数读字符时遇到文件结束符,
函数返回一个文件结束标志EOF(即-1)。
The C Programming Language 19
读写字符举例
例10.1 从键盘输入一些字符,逐个把它们送 到磁盘上去,直到输入一个“#”为止。
Ex1001.c
The C Programming Language 20
文件的打开与关闭
– 文件的打开 – 文件的关闭
文件的顺序读写 文件的随机读写 文件读写的出错检测 文件操作程序举例
The C Programming Language 17
向文件写一个字符
1. 用fputc函数向文件写入一个字符 调用形式:
fputc ( ch,fp ) ;
函数功能:
– 将字符(ch的值)输出到fp所指向的文件中去。
函数功能:
– 使文件指针变量不指向该文件,也就是文件指针
变量与文件“脱钩”,此后不能再通过该指针对 原来与其相联系的文件进行读写操作
返回值:
– 关闭成功返回值为0;否则返回EOF(-1)
The C Programming Language 16
内容提纲
C文件的有关概念
– 文件的概念 – 文件指针与文件位置指针
内容提纲
C文件的有关概念
– 文件的概念 – 文件指针与文件位置指针
文件的打开与关闭
– 文件的打开 – 文件的关闭
文件的顺序读写 文件的随机读写 文件读写的出错检测 文件操作程序举例
The C Programming Language 30
文件的随机读写
顺序读写和随机读写 顺序读写:
– 位置指针按字节位置顺序移动。顺序读写容易理
The C Programming Language
8
文件缓冲区
ANSIC标准采用“缓冲文件系统”处理文件 缓冲文件系统:系统自动地在内存区为每一个正在 使用的文件开辟一个缓冲区。 从内存向磁盘输出数据必须先送到内存中的缓冲区, 装满缓冲区后才一起送到磁盘去。
输出文件缓冲区 程序 数据区 输入文件缓冲区
什么是文件
– 所谓文件一般指存储在外部介质(如磁盘磁带)上
数据的集合。 – 操作系统是以文件为单位对数据进行管理的,输 入输出是数据传送的过程,数据如流水一样从一 处流向另一处,因此常将输入输出形象地称为流 (stream),即输入输出流。 – C语言把文件看作是一个字符(字节)的序列, 即由一个一个字符(字节)的数据顺序组成。一 个输入输出流就是一个字节流或二进制流。
说明
注意:
– 用 fprintf 和 fscanf 函数对磁盘文件读写,使用方
便,容易理解,但由于在输入时要将ASCII码转 换为二进制形式,在输出时又要将二进制形式转 换成字符,花费时间比较多。因此,在内存与磁 盘频繁交换数据的情况下,最好不用fprintf和 fscanf函数,而用fread和fwrite函数。
The C Programming Language
10
文件指针
FILE类型的数组:
– FILE
f[5];定义了一个结构体数组f,它有5个元素,可 ; 以用来存放5个文件的信息。
文件型指针变量:
– FILE *fp;fp是一个指向FILE类型结构体的指针变量。 ;
可以使fp指向某一个文件的结构体变量,从而通过该结构 体变量中的文件信息能够访问该文件。 – 如果有n个文件,一般应设n个指针变量,使它们分别 指向n个文件,以实现对文件的访问。
The C Programming Language
11
FILE型指针变量
在标准输入输出库中,系统定义了三个FILE型的指 针变量:
– stdin (标准输入文件指针) 。指向在内存中与键盘相应的
文件信息区,因此,用它进行输入就蕴含了从键盘输入。 – stdout (标准输出文件指针) 。指向在内存中与显示器屏 幕相应的文件信息区,因此,用它进行输出就蕴含了输 出到显示器屏幕。 – stderr (标准错误文件指针),用来输出出错的信息,它也 指向在内存中与显示器屏幕相应的文件信息区,因此, 在程序运行时的出错的信息就输出到显示器屏幕。
解、易操作,但效率不高。
随机读写:
– 读写完上一个字符(字节)后,并不一定要读写
其后续的字符(字节),而可以读些文件中任意 位置上所需要的字符(字节)。
The C Programming Language 31
文件位置指针的定位
C语言提供以下有关函数使位置指针指向指 定的位置:
– (1) rewind函数
The C Programming Language 5
文件名的命名
注意:
– 文件标识被称为文件名,但此时的文件名包括以
上三部分内容,而不仅是文件名主干。 – 文件名主干的命名规则遵循标识符的命名规则。 后缀用来表示文件的性质,一般不超过3个字母。 – 如:.txt (文本文件),.dat (数据文件) , .doc (Word 生成的文件)
The C Programming Language 9
文件
文件类型声明
文件类型声明:
typedef struct { short level; unsigned flags; char fd; unsigned char hold; short bsize; unsigned char *buffer; unsigned ar*curp; unsigned istemp; short token; } FILE; // 缓冲区“满”或“空”的程度 // 文件状态标志 // 文件描述符 // 如无缓冲区不读取字符 // 缓冲区的大小 // 数据缓冲区的位置 // 指针,当前的指向 // 临时文件,指示器 // 用于有效性检查
The C Programming Language
7
ASCII文件和二进制文件的比较
ASCII文件便于对字符进行逐个处理,也便于输出 字符。但一般占存储空间较多,而且要花费转换时 间。 二进制文件可以节省外存空间和转换时间,但一个 字节并不对应一个字符,不能直接输出字符形式。 一般中间结果数据需要暂时保存在外存上,以后又 需要输入内存的,常用二进制文件保存。
The C Programming Language
6
文件的分类
根据数据的组织形式,数据文件可分为ASCII文件 和二进制文件。
– ASCII文件(文本文件):每一个字节放一个ASCII代码。 – 二进制文件:把内存中的数据按其在内存中的存储形式
原样输出到磁盘上存放。 – 例:整数10000在内存中的存储形式以及分别按ASCII码 形式和二进制形式输出如下图所示:
The C Programming Language
12
位置指针
位置指针用来指示当前的读写位置。 一般情况下,在对字符文件进行顺序读写时, 文件的位置指针指向文件开头,这时如果对 文件进行读的操作,就读第一个字符,然后 文件的位置指针顺序向后移一个位置,在下 一次执行读的操作时,就将指针指向的第二 个字符读入。依此类推,直到遇文件尾
The C Programming Language
26
向文件读写一组数据
数据块读写函数(fread()和fwrite()) 函数调用:
– fread (buffer,size,count,fp); – fwrite(buffer,size,count,fp);
参数说明:
– buffer:是一个指针。对fread 来说,它是读入数据的存
– 用fputs函数可以向指定的文件输出一个字符串。
The C Programming Language
23
读写字符串举例
例10.3 从键盘读入若干个字符串,对它们按 字母顺序排序,后把它们送到谚磁盘文件中 保存。
Ex1003.c
The C Programming Language 24
文件的格式化读写
函数调用:
– fprintf ( 文件指针,格式字符串,输出表列); – fscanf ( 文件指针,格式字符串,输入表列);
函数功能:
– 从磁盘文件中读入或输出字符。
例:
– fprintf(fp,”%d,%6.2f”,i,t); – fscanf (fp,”%d,%f”,&i,&t);
The C Programming Language 25
The C Programming Language 4
C文件的有关概念
文件名
– 一个文件要有一个惟一的文件标识,以便用户识别和引
用。文件标识包括三部分: 文件路径: 文件名主干; 文件后缀。 – 文件路径表示文件在外部存储设备中的位置。 如:d: \ cc \ temp \ file1 . dat ↑ ↑ ↑ 文件路径 文件名主干 文件后缀
The C Programming Language 2
内容提纲
ຫໍສະໝຸດ BaiduC文件的有关概念
– 文件的概念 – 文件指针与文件位置指针
文件的打开与关闭
– 文件的打开 – 文件的关闭
文件的顺序读写 文件的随机读写 文件读写的出错检测 文件操作程序举例
The C Programming Language 3
C文件的有关概念
Ex1004_1.c
The C Programming Language 28
向文件读写一组数据示例
验证在磁盘文件“stu-list”中是否已存在此数 据,用以下程序从“stu-list”文件中读入数据, 然后在屏幕上输出。
Ex1004_2.c
The C Programming Language 29