南邮C语言程序设计课件第11章091115PPT课件下载推荐.ppt
- 文档编号:15592512
- 上传时间:2022-11-06
- 格式:PPT
- 页数:26
- 大小:635KB
南邮C语言程序设计课件第11章091115PPT课件下载推荐.ppt
《南邮C语言程序设计课件第11章091115PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《南邮C语言程序设计课件第11章091115PPT课件下载推荐.ppt(26页珍藏版)》请在冰豆网上搜索。
之前所有程序的原始数据或者从键盘读入或者赋值;
每次运行的结果未保存下来,下次想看键盘读入或者赋值;
每次运行的结果未保存下来,下次想看结果必须再次运行程序。
但是,程序中的原始数据、中间结结果必须再次运行程序。
但是,程序中的原始数据、中间结果、最终结果有时需要以数据文件的形式保存下来并在程序果、最终结果有时需要以数据文件的形式保存下来并在程序中执行相关操作中执行相关操作文件操作解决的问题文件操作解决的问题:
通过运行程序,能实现数据文件的读:
通过运行程序,能实现数据文件的读写存储等操作,从而解决程序中的数据永久存储问题写存储等操作,从而解决程序中的数据永久存储问题文件操作的主要步骤:
文件操作的主要步骤:
定义文件指针打开文件,读写,关闭定义文件指针打开文件,读写,关闭2022/11/62022/11/644文件指针n每一个文件对应一个每一个文件对应一个文件指针文件指针,文件操作必须通过文,文件操作必须通过文件指针才能完成。
件指针才能完成。
几个常用的文件指针:
键盘几个常用的文件指针:
键盘-stdinstdin,显示器,显示器-stdoutstdout,打,打印机印机sprnsprn从键盘从键盘(stdinstdin)和显示器和显示器(stdoutstdout)输入输出数据的操作通常输入输出数据的操作通常将键盘文件和显示器文件省略了将键盘文件和显示器文件省略了n字符、字符串、数值型变量字符、字符串、数值型变量的输入的输入/输出用输出用终端方式终端方式以以及等效的及等效的文件输入输出方式文件输入输出方式对比如下:
对比如下:
终端输入输出终端输入输出文件输入输出文件输入输出charch;
/字符型字符型ch=getchar();
putchar(ch);
charch;
ch=fgetc(stdin);
fputc(ch,stdout);
chars10;
/字符串字符串gets(s);
puts(s);
/字符串字符串fgets(s,5,stdin);
fputs(s,stdout);
intn;
/整型整型scanf(“%d”,&
n);
printf(“n=%dn”,n);
/整型整型fscanf(stdin,“%d”,&
fprintf(stdout,“n=%dn”,n);
2022/11/62022/11/655文件指针n以下主要讨论以下主要讨论磁盘文件磁盘文件,磁盘是一种外部介质,与键,磁盘是一种外部介质,与键盘和显示器不同,它可以盘和显示器不同,它可以持久地保存数据持久地保存数据。
n专门存放数据的磁盘文件我们称其为专门存放数据的磁盘文件我们称其为数据文件数据文件n流的数据组织形式流的数据组织形式分为字符序列和字节序列,前者称分为字符序列和字节序列,前者称为为文本流文本流,后者称为,后者称为二进制流二进制流。
例例:
doubledouble型型常量常量136467.56789136467.56789,如果是一个,如果是一个文本流文本流,共占,共占1212个个字节(一个字符对应一个字节(一个字符对应一个ASCIIASCII码,每一个码,每一个ASCIIASCII码占一码占一个字节);
如果是二进制流,共占个字节);
如果是二进制流,共占88个个字节字节例例:
longlongintint型常量型常量100,100,如果是一个如果是一个文本流文本流,共占,共占33个个字节;
字节;
如果是二进制流,共占如果是二进制流,共占44个个字节字节n与与文本流文本流和和二进制流二进制流对应的磁盘文件分别称为对应的磁盘文件分别称为文本文文本文件件和和二进制文件。
二进制文件。
2022/11/62022/11/666文件的打开与关闭n并不是每一次读写文件操作都需要进行磁盘访问并不是每一次读写文件操作都需要进行磁盘访问读写操作的本质:
读写操作的本质:
每一次对磁盘的读写都要移动磁头,以寻每一次对磁盘的读写都要移动磁头,以寻找磁道扇区。
若程序中的每一次读写操作都对应一次实际的找磁道扇区。
若程序中的每一次读写操作都对应一次实际的磁盘访问,则要花费很多读写时间,而且对磁盘的损耗大。
磁盘访问,则要花费很多读写时间,而且对磁盘的损耗大。
解决方案解决方案:
系统在内存中为程序所需要的每一个文件:
系统在内存中为程序所需要的每一个文件开辟开辟一一个个“缓冲区缓冲区”:
当程序从磁盘文件读取数据时,一次将一批:
当程序从磁盘文件读取数据时,一次将一批数据送到数据送到(输入)(输入)缓冲区,然后将缓冲区的数据传给程序中缓冲区,然后将缓冲区的数据传给程序中的接收变量;
如果向磁盘文件输出时,先将程序中的数据送的接收变量;
如果向磁盘文件输出时,先将程序中的数据送到到(输出)(输出)缓冲区,待缓冲区装满后,再一次传给磁盘文件。
缓冲区,待缓冲区装满后,再一次传给磁盘文件。
FILEFILE类型:
类型:
读取一个文件需要许多信息,例如,与该文件对读取一个文件需要许多信息,例如,与该文件对应的内存文件缓冲区的大小和地址、文件当前的读写位置、应的内存文件缓冲区的大小和地址、文件当前的读写位置、文件缓冲区中未处理的字符个数、文件使用方式等。
这些信文件缓冲区中未处理的字符个数、文件使用方式等。
这些信息存放在一个结构变量中,我们称此结构为文件类型,取名息存放在一个结构变量中,我们称此结构为文件类型,取名FILEFILE。
2022/11/62022/11/677文件的打开与关闭nFileFile类型的定义:
类型的定义:
structFILEshortlevel;
/文件缓冲区文件缓冲区满满或或空空的程度的程度unsignedflags;
/文件状态标志文件状态标志charfd;
/文件描述符文件描述符unsignedcharhold;
/若无文件缓冲区,则不读取数据若无文件缓冲区,则不读取数据shortbsize;
/文件缓冲区大小文件缓冲区大小unsignedchar*buffer;
/文件缓冲区的位置文件缓冲区的位置unsignedchar*curp;
/指向文件缓冲区当前数据的指针指向文件缓冲区当前数据的指针unsignedistemp;
/临时文件指示器临时文件指示器shorttoken;
/用于有效性检验用于有效性检验;
2022/11/62022/11/688文件的打开与关闭n程序用到一个文件,需要系统在内存建立一个文件缓程序用到一个文件,需要系统在内存建立一个文件缓冲区,并返回一个文件类型变量的地址(冲区,并返回一个文件类型变量的地址(FILEFILE类型的类型的指针),这是指针),这是打开文件打开文件打开文件通过调用打开文件通过调用fopen函数实现,函数实现,原型为:
原型为:
FILE*fopen(char*filename,char*mode);
因此,程序首先需要定义一个因此,程序首先需要定义一个FILE*指针来接收指针来接收fopen函数函数的返回值,以后通过该指针对文件进行各种读写操作的返回值,以后通过该指针对文件进行各种读写操作例:
例:
FILE*fp;
fp=fopen(D:
records.txt,r);
如果如果文件打开成功文件打开成功,则返回一个有效地址值;
如果,则返回一个有效地址值;
如果打开失败打开失败则返回值为则返回值为NULL(0)filemame表示表示磁盘文件名磁盘文件名mode代表文代表文件使用方式件使用方式返回值为返回值为FILE*指针指针带盘符路径的带盘符路径的完整文件名完整文件名以以rr方式打开表方式打开表示从文件中读示从文件中读数据入内存数据入内存2022/11/62022/11/699文件的打开与关闭n重点是文件的打开方式重点是文件的打开方式,记住下面记住下面55个符号:
个符号:
rr(意为(意为readread):
打开一个):
打开一个已存在的文件已存在的文件以便以便从文件中从文件中读数据读数据入内存,指针入内存,指针fpfp-curpcurp定位于定位于文件头文件头;
若文件不存在则打开;
若文件不存在则打开失败返回失败返回00ww(意为(意为write):
write):
建立一个建立一个新文件新文件以便以便写数据入文件写数据入文件,指针指针fpfp-curpcurp定位于定位于文件头文件头;
若文件已存在则若文件已存在则清空原文件清空原文件,打开失败返打开失败返回回00aa(意为意为append):
append):
打开一个打开一个已存在的文件已存在的文件以便在原文件以便在原文件尾追加尾追加新的内容新的内容,指针,指针fpfp-curpcurp定位于定位于文件尾文件尾;
若文件不存在则相;
若文件不存在则相当于当于ww的作用的作用,打开失败返回打开失败返回00+:
+:
作为前三个的后缀使用作为前三个的后缀使用,表示打开之后既可读又可写表示打开之后既可读又可写bb(意为意为binary):
binary):
作为前作为前33个的后缀使用个的后缀使用,表示打开的是一个二表示打开的是一个二进制文件进制文件,没有此后缀则默认打开的是文本文件没有此后缀则默认打开的是文本文件2022/11/62022/11/61010文件的打开与关闭n因此因此55个符号组合起来共有个符号组合起来共有1212种打开方式:
种打开方式:
(1)r
(1)r、ww、a:
a:
打开文本文件,只可读或只可写(追加)打开文本文件,只可读或只可写(追加)
(2)r+
(2)r+、w+w+、a+a+:
打开文本文件,既可读又可写(追加):
打开文本文件,既可读又可写(追加)(3)rb(3)rb、wbwb、abab:
打开二进制文件,只可读或只可写(追加):
打开二进制文件,只可读或只可写(追加)(4)rb+(4)rb+、wbwb+、abab+:
打开二进制文件,既可读又可写:
打开二进制文件,既可读又可写(追加追加)n要保证打开文件正确才能执行后续操作,用如下代码:
要保证打开文件正确才能执行后续操作,用如下代码:
if(!
fp)/如果文件指针为如果文件指针为0则打开失败则打开失败printf(cantopenfiles.txtn);
exit
(1);
(fp=fopen(D:
records.txt,r)2022/11/62022/11/61111文件的打开与关闭n文件打开后执行读写操作完毕文件打开后执行读写操作完毕,需要释放文件缓冲区,需要释放文件缓冲区,这是关闭文件这是关闭文件,所调用的函数原型为所调用的函数原型为:
intfclose(FILE*fp);
n特别提醒特别提醒:
在执行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南邮 语言程序设计 课件 11 091115
![提示](https://static.bdocx.com/images/bang_tan.gif)