第10章 文件处理程序设计PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
例10-1
【例10-1】如何将一个文件的内容复制到另一个 文件中?
【分析】 操作系统是以文件为单位对数据进行管理的。 也就是说,如果要查找存在外部介质上的数据, 必须先按文件名找到指定的文件,然后再从该文 件中读取数据。 如果要向外部介质上存储数据,也必须先建立一 个文件(以文件名标识),然后才能向它输出数 据。
5 (53)
二进制文件形式 00110000 00111001
ASCII文件与二进制文件的区别
❖ASCII码文件可在屏幕上按字符显示,例如 源程序文件就是ASCII文件,用DOS命令 TYPE可显示文件的内容。
❖由于是按字符显示,因此能读懂文件内容。 占用存储空间大,在进行读、写操作时要 进行二进制与十进制之间的相互转换,效 率低。
《C语言程序设计》
第10章 文件处理程序设计
第一部分
整体概述
THE FIRST PART OF THE OVERALL OVERVIEW, PLEASE SUMMARIZE THE CONTENT
本章内容
1
文件复制问题
文件的概念、文件的打开与关闭 出错检查、文件的顺序读写
2
账号管理问题
文件定位、随机文件的读写
❖缓冲文件系统是指操作系统在内存中为每 一个正在使用的文件开辟一个读写缓冲区。
内
存
程序数据区
输 输入缓冲区 入
输出 输出缓冲区
输入 (读)
输出 (写)
外存 文件
❖在输入数据时,先把数据从磁盘读到“输 入缓冲区”,等输入缓冲区已满或强制把 它清空时再把其中的数据送到程序数据区 进行处理。
❖在C语言中,文件就是由一个一个的字符或字 节的数据顺序组成的字符或字节序列。
❖换句话说,C语言把文件看作是一个有序的字 节流。
❖C语言对文件的存取是以字节为单位的,也就 意味着以字符形式进行操作。
❖每一个文件通常以文件结束标志(end-offile,也就是EOF)结束。
文件的分类
从用户的角度 文件分为
while((ch=fgetc(fp1))!=EOF) /* 读第一个文件的字符 */
fputc(ch,fp2);
/* 复制到第二个文件 */
fclose(fp1); /* 关闭文件1 */ fclose(fp2); /* 关闭文件2 */
return 0;
关闭 文件
}
文件的概念
❖所谓“文件”一般指存储在介质上的数据的集 合。
❖二进制文件虽然也可在屏幕上显示,但其 内容无法读懂。但二进制文件占用存储空 间少,在进行读、写操作时不用进行二进 制与十进制之间的相互转换,效率高。
文件系统
❖根据操作系统对文件的处理方式的不同, 把文件系统分为
▪ 缓冲文件系统 ▪ 非缓冲文件系统
❖ANSI C标准采用缓冲文件系统。
缓冲文件系统
例10-1 实现代码
/* LI10_1.C */
定义文
#include<stdio.h> #include<stdlib.h> int main()
件结构 体指针
以读方 式打开
以写方 式打开
{ FILE *fp1,*fp2; /*定义指向源文件和目标文件的指针*/文件
文件
char ch,file1[50],file2[50];
{ printf("Cannot open %s\n",file1);
exit(1);
/*文件打开不成功的处理*/
写文 件信 息
}
if((fp2=fopen(file2,"w"))==NULL) /* 以写的方式打开复制的目标文件 */
fp2=stdout; /* 缺省输出文件为标准输出设备即到显示器 */
▪ 二进制文件。数据按其在内存中的存储形式原 样存放。
ASCII文件
❖ASCII文件也称文本文件。 ❖ASCII文件在磁盘中存放时,每个字符对
应一个字节,用于存放对应的ASCII码。 如:整型十进制数5678,按ASCII文件 存放则需要占用4个字节。
二进制文件
❖二进制文件:是对不同的数据类型,按其 实际占用内存字节数存放。即内存的存储 形式,原样输出到磁盘上存放。
❖十进制整数12345的存储,按ASCII码 形式存储占用5个字节,而采用二进制形式 存储只需要2个字节。
文件在内存中的存储
wk.baidu.com
内存存储形式 00110000 00111001
ASCII文件(文本文件)形式
00110001 00110010 00110011 00110100 00110101
1 的 ASCII 2 (50) 3 (51) 4 (52) 码为(49)
❖ 显示器为标准输出文件,文件指针为stdout。 在屏幕上显示有关信息就是向标准输出文件输出。 如printf、putchar函数。
❖ 标准错误输出也是标准设备文件,文件指针为 stderr。
❖ 本章所讲的文件主要是针对普通的磁盘文件。
从文件编码方式分类
❖从文件编码的方式分:
▪ ASCII码文件。在磁盘中存放时每个字符对应 一个字节,用于存放对应的ASCII码。
3
DOS环境下的文件复制问题
带参数的main函数
4
多文件管理问题
内部函数、外部函数 复杂系统的多文件运行
文件复制问题
❖在程序对数据进行操作的过程中,可以利 用变量存储各种信息,如输入的数据、计 算结果和运行过程中产生的中间值,但是 程序停止运行,变量的值就丢失了。
❖在很多应用中,能够永久存储信息是非常 重要的。当用户想让信息存储在计算机上 的时间比程序运行的时间更长时,一般的 方法是收集信息,使其成为一个逻辑上结 合更紧密的整体,并以文件的形式保存在 一种永久存储介质中。
printf("Input source file :");
scanf("%s",file1);
/* 输入源文件名 */
读文
psifcr((iafnpnt1ff((=""fI%nopsp"ue,ntfi(olfebil2eje)1;c,"t rf"il)e)=:=")N;/U* L输L入) 目/*以标只文读件方名式*/打开要复制的文件件息*信/
标准设备文件
从文件编码方式 文件分为
普通磁盘文件
ASCII文件
二进制文件
标准设备文件
❖ 把外部设备也看作是一个文件来进行管理,把它 们的输入、输出等同于对磁盘文件的读和写。
❖ 键盘为标准的输入文件,文件指针为stdin。从 键盘上输入就意味着从标准输入文件上输入数据。 如scanf、getchar函数。
例10-1
【例10-1】如何将一个文件的内容复制到另一个 文件中?
【分析】 操作系统是以文件为单位对数据进行管理的。 也就是说,如果要查找存在外部介质上的数据, 必须先按文件名找到指定的文件,然后再从该文 件中读取数据。 如果要向外部介质上存储数据,也必须先建立一 个文件(以文件名标识),然后才能向它输出数 据。
5 (53)
二进制文件形式 00110000 00111001
ASCII文件与二进制文件的区别
❖ASCII码文件可在屏幕上按字符显示,例如 源程序文件就是ASCII文件,用DOS命令 TYPE可显示文件的内容。
❖由于是按字符显示,因此能读懂文件内容。 占用存储空间大,在进行读、写操作时要 进行二进制与十进制之间的相互转换,效 率低。
《C语言程序设计》
第10章 文件处理程序设计
第一部分
整体概述
THE FIRST PART OF THE OVERALL OVERVIEW, PLEASE SUMMARIZE THE CONTENT
本章内容
1
文件复制问题
文件的概念、文件的打开与关闭 出错检查、文件的顺序读写
2
账号管理问题
文件定位、随机文件的读写
❖缓冲文件系统是指操作系统在内存中为每 一个正在使用的文件开辟一个读写缓冲区。
内
存
程序数据区
输 输入缓冲区 入
输出 输出缓冲区
输入 (读)
输出 (写)
外存 文件
❖在输入数据时,先把数据从磁盘读到“输 入缓冲区”,等输入缓冲区已满或强制把 它清空时再把其中的数据送到程序数据区 进行处理。
❖在C语言中,文件就是由一个一个的字符或字 节的数据顺序组成的字符或字节序列。
❖换句话说,C语言把文件看作是一个有序的字 节流。
❖C语言对文件的存取是以字节为单位的,也就 意味着以字符形式进行操作。
❖每一个文件通常以文件结束标志(end-offile,也就是EOF)结束。
文件的分类
从用户的角度 文件分为
while((ch=fgetc(fp1))!=EOF) /* 读第一个文件的字符 */
fputc(ch,fp2);
/* 复制到第二个文件 */
fclose(fp1); /* 关闭文件1 */ fclose(fp2); /* 关闭文件2 */
return 0;
关闭 文件
}
文件的概念
❖所谓“文件”一般指存储在介质上的数据的集 合。
❖二进制文件虽然也可在屏幕上显示,但其 内容无法读懂。但二进制文件占用存储空 间少,在进行读、写操作时不用进行二进 制与十进制之间的相互转换,效率高。
文件系统
❖根据操作系统对文件的处理方式的不同, 把文件系统分为
▪ 缓冲文件系统 ▪ 非缓冲文件系统
❖ANSI C标准采用缓冲文件系统。
缓冲文件系统
例10-1 实现代码
/* LI10_1.C */
定义文
#include<stdio.h> #include<stdlib.h> int main()
件结构 体指针
以读方 式打开
以写方 式打开
{ FILE *fp1,*fp2; /*定义指向源文件和目标文件的指针*/文件
文件
char ch,file1[50],file2[50];
{ printf("Cannot open %s\n",file1);
exit(1);
/*文件打开不成功的处理*/
写文 件信 息
}
if((fp2=fopen(file2,"w"))==NULL) /* 以写的方式打开复制的目标文件 */
fp2=stdout; /* 缺省输出文件为标准输出设备即到显示器 */
▪ 二进制文件。数据按其在内存中的存储形式原 样存放。
ASCII文件
❖ASCII文件也称文本文件。 ❖ASCII文件在磁盘中存放时,每个字符对
应一个字节,用于存放对应的ASCII码。 如:整型十进制数5678,按ASCII文件 存放则需要占用4个字节。
二进制文件
❖二进制文件:是对不同的数据类型,按其 实际占用内存字节数存放。即内存的存储 形式,原样输出到磁盘上存放。
❖十进制整数12345的存储,按ASCII码 形式存储占用5个字节,而采用二进制形式 存储只需要2个字节。
文件在内存中的存储
wk.baidu.com
内存存储形式 00110000 00111001
ASCII文件(文本文件)形式
00110001 00110010 00110011 00110100 00110101
1 的 ASCII 2 (50) 3 (51) 4 (52) 码为(49)
❖ 显示器为标准输出文件,文件指针为stdout。 在屏幕上显示有关信息就是向标准输出文件输出。 如printf、putchar函数。
❖ 标准错误输出也是标准设备文件,文件指针为 stderr。
❖ 本章所讲的文件主要是针对普通的磁盘文件。
从文件编码方式分类
❖从文件编码的方式分:
▪ ASCII码文件。在磁盘中存放时每个字符对应 一个字节,用于存放对应的ASCII码。
3
DOS环境下的文件复制问题
带参数的main函数
4
多文件管理问题
内部函数、外部函数 复杂系统的多文件运行
文件复制问题
❖在程序对数据进行操作的过程中,可以利 用变量存储各种信息,如输入的数据、计 算结果和运行过程中产生的中间值,但是 程序停止运行,变量的值就丢失了。
❖在很多应用中,能够永久存储信息是非常 重要的。当用户想让信息存储在计算机上 的时间比程序运行的时间更长时,一般的 方法是收集信息,使其成为一个逻辑上结 合更紧密的整体,并以文件的形式保存在 一种永久存储介质中。
printf("Input source file :");
scanf("%s",file1);
/* 输入源文件名 */
读文
psifcr((iafnpnt1ff((=""fI%nopsp"ue,ntfi(olfebil2eje)1;c,"t rf"il)e)=:=")N;/U* L输L入) 目/*以标只文读件方名式*/打开要复制的文件件息*信/
标准设备文件
从文件编码方式 文件分为
普通磁盘文件
ASCII文件
二进制文件
标准设备文件
❖ 把外部设备也看作是一个文件来进行管理,把它 们的输入、输出等同于对磁盘文件的读和写。
❖ 键盘为标准的输入文件,文件指针为stdin。从 键盘上输入就意味着从标准输入文件上输入数据。 如scanf、getchar函数。