《C语言程序设计实用教程》课件第9章 文件的输入和输出处理.ppt
《《C语言程序设计实用教程》课件第9章 文件的输入和输出处理.ppt》由会员分享,可在线阅读,更多相关《《C语言程序设计实用教程》课件第9章 文件的输入和输出处理.ppt(65页珍藏版)》请在三一文库上搜索。
1、9.1 文件的基本概念文件的基本概念9.2 文件的打开与关闭文件的打开与关闭9.3文件的顺序读写文件的顺序读写9.4文件的随机读写文件的随机读写9.1 文件的基本概念文件的基本概念n文件文件:一组相关数据的有序集合,这一组相关数据的有序集合,这个数据集的名称,叫做文件名个数据集的名称,叫做文件名。n文件有多种类型,如源程序文件、目标文件有多种类型,如源程序文件、目标文件、可执行文件、库文件文件、可执行文件、库文件 n文件通常是驻留在外部介质文件通常是驻留在外部介质,如磁盘如磁盘9.1.1 文件的分类文件的分类 n从用户的角度,分为从用户的角度,分为普通文件普通文件与与设备文件设备文件:n普通文
2、件:驻留在磁盘或其它外部介质上的一个有普通文件:驻留在磁盘或其它外部介质上的一个有序数据集。序数据集。n程序文件:源文件、目标文件、可执行程序程序文件:源文件、目标文件、可执行程序n数据文件:输入输出数据。数据文件:输入输出数据。n设备文件:与主机相联的各种外部设备。设备文件:与主机相联的各种外部设备。n如显示器(标准输出文件)、打印机、键盘如显示器(标准输出文件)、打印机、键盘(标准输出文件)等。在操作系统中,把外部(标准输出文件)等。在操作系统中,把外部设备也看作是一个文件来进行管理。设备也看作是一个文件来进行管理。9.1.1 文件的分类文件的分类n从文件编码的方式,分为:从文件编码的方式
3、,分为:ASCII码文件码文件和和二二进制码进制码(binary)文件文件。nASCII(text)文件:在磁盘中存放时,每一个字节文件:在磁盘中存放时,每一个字节存放一个字符对应的存放一个字符对应的ASCII码。码。nASCII码文件可在屏幕上按字符显示。能读懂文码文件可在屏幕上按字符显示。能读懂文本文件内容本文件内容 n如源程序文件。文本编辑器如记事本可显示文本如源程序文件。文本编辑器如记事本可显示文本文件的内容。文件的内容。n二进制文件:按二进制文件:按二进制形式二进制形式来存放的。来存放的。n二进制文件虽然也可在屏幕上显示,二进制文件虽然也可在屏幕上显示,但其内容但其内容无法读懂。如可
4、执行文件。无法读懂。如可执行文件。n每一个文件都有唯一的文件名(文件标每一个文件都有唯一的文件名(文件标识),以便用户识别和引用识),以便用户识别和引用。n文件标识包括三部分:文件标识包括三部分:(1)文件路径文件路径(2)文件名文件名(3)后缀后缀名(类型名)名(类型名)9.2.1文件名文件名 n文件路径表示文件在外部存储设备中的位文件路径表示文件在外部存储设备中的位置。如:置。如:C:DocumentMyfile1.docn表示表示file1.doc文件存放在文件存放在c盘中的盘中的Document目录下的目录下的My子目录下面子目录下面文件路径文件路径文件名文件名文件后缀文件后缀9.2.
5、1文件名文件名 n文件路径表示文件在外部存储设备中的位文件路径表示文件在外部存储设备中的位置。如:置。如:C:DocumentMyfile1.docn表示表示file1.doc文件存放在文件存放在c盘中的盘中的Document目录下的目录下的My子目录下面子目录下面文件名文件名9.2.1文件名文件名 n文件路径表示文件在外部存储设备中的位文件路径表示文件在外部存储设备中的位置。如:置。如:C:DocumentMyfile1.docn表示表示file1.doc文件存放在文件存放在c盘中的盘中的Document目录下的目录下的My子目录下面子目录下面一般不超过一般不超过3个字母个字母(doc、tx
6、t、dat、c、cpp、obj、exe、ppt、bmp等)等)9.2.1文件名文件名 9.1.3 文件类型指针文件类型指针 n文件指针文件指针:当一个文件被打开时,用一个指针当一个文件被打开时,用一个指针变量指向该文件,变量指向该文件,这个指针被称做文件类型这个指针被称做文件类型指针。指针。n声明文件指针的语句形式:声明文件指针的语句形式:FILE*指针变量;指针变量;nFILE是由系统定义的一个结构,是由系统定义的一个结构,含有文件名、文含有文件名、文件状态和文件当前位置等信息。件状态和文件当前位置等信息。例如:例如:FILE*fp;表示表示fp是指向是指向FILE结构的指针变量。结构的指针
7、变量。n通过通过fp实施对文件的各种操作:文件的打开、实施对文件的各种操作:文件的打开、关闭、读、写、关闭、读、写、定位等各种操作。定位等各种操作。9.2 文件的打开与关闭文件的打开与关闭n文件在进行读写操作之前要先打开,使用完毕文件在进行读写操作之前要先打开,使用完毕要关闭。要关闭。n打开文件:建立文件的有关信息,并使文件指打开文件:建立文件的有关信息,并使文件指针指向该文件,以便进行其它操作。针指向该文件,以便进行其它操作。n所谓所谓“打开打开”:为文件建立相应的信息区为文件建立相应的信息区(用来存用来存放有关文件的信息放有关文件的信息)和文件缓冲区和文件缓冲区(用来暂时存放输用来暂时存放
8、输入输出的数据入输出的数据)。n关闭文件:断开指针与文件之间的联系,禁止关闭文件:断开指针与文件之间的联系,禁止再对该文件进行读写操作。再对该文件进行读写操作。9.2.1 文件的打开文件的打开 n函数函数fopen调用的一般形式为:调用的一般形式为:文件指针名文件指针名=fopen(文件名文件名,使用文件方式使用文件方式);n“文件指针名文件指针名”:FILE 类型的指针变量;类型的指针变量;n“文件名文件名”为字符串常量或字符串数组名;为字符串常量或字符串数组名;n“使用文件方式使用文件方式”指明文件的类型和操作要求指明文件的类型和操作要求例如例如:FILE*fp;fp=fopen(file
9、.a,r);在当前目录下打开文件在当前目录下打开文件“file.a”,只允许进行,只允许进行“读读”操作,并使操作,并使fp指向该文件。指向该文件。9.2.1 文件的打开文件的打开 n函数函数fopen调用的一般形式为:调用的一般形式为:文件指针名文件指针名=fopen(文件名文件名,使用文件方式使用文件方式);例如例如:FILE*fpe fpe=fopen(c:p1.exe,rb)打开打开C驱动器磁盘的根目录下的文件驱动器磁盘的根目录下的文件“p1.exe,只,只允许按二进制方式进行读操作。两个反斜线允许按二进制方式进行读操作。两个反斜线“”是用转义字符表示的根目录是用转义字符表示的根目录“
10、”。9.2.1 文件的打开文件的打开n文件的使用方式说明:文件的使用方式说明:由由r、w、a、t、b、+6个字符拼成,各字符的个字符拼成,各字符的含义是:含义是:r(read):读;读;w(write):写写 a(append):追加追加 t(text):文本文件文本文件(默认值默认值)b(banary):二进制文件二进制文件 +:读和写读和写9.2.1 文件的打开文件的打开n在打开一个文件时,如果出错,在打开一个文件时,如果出错,fopen将返回一个空指针值将返回一个空指针值NULL。n常用以下程序段打开文件:常用以下程序段打开文件:if(fp=fopen(d:p1.exe,rb)=NULL
11、)printf(error on open d:p1.exe!);getch();/从键盘输入一个字符,但不在屏幕上显示从键盘输入一个字符,但不在屏幕上显示 exit(1);9.2.2 文件的关闭文件的关闭n函数函数fclose调用的一般形式是:调用的一般形式是:fclose(文件指针文件指针);例如:例如:fclose(fp);n正常完成关闭文件操作时,正常完成关闭文件操作时,fclose函数函数返回值为返回值为0。如返回非零值则表示有错误。如返回非零值则表示有错误发生。发生。9.3文件的顺序读写文件的顺序读写n语言提供了文件读写函数语言提供了文件读写函数n字符读写函数字符读写函数:fget
12、c和和fputc;n字符串读写函数:字符串读写函数:fgets和和fputsn格式化读写函数:格式化读写函数:fscanf和和fprinfn数据块读写函数:数据块读写函数:freed和和fwrite,n使用这些函数时,程序要求包含头文件使用这些函数时,程序要求包含头文件stdio.h。9.3.1 向文件读写字符向文件读写字符nfgetc和和fputc函数函数:以字符为单位的读以字符为单位的读写。写。n每次可从文件读出或向文件写入一个字符。每次可从文件读出或向文件写入一个字符。9.3.1 向文件读写字符向文件读写字符1.读字符函数读字符函数fgetc nfgetc函数的功能函数的功能:从指定的文
13、件中读入从指定的文件中读入一个字符一个字符n调用形式:调用形式:ch=fgetc(fp);nch:字符型变量字符型变量nfp是文件指针是文件指针9.3.1 向文件读写字符向文件读写字符1.读字符函数读字符函数fgetc 例如:例如:ch=fgetc(fp);从打开的文件从打开的文件fp中读取一个字符并送入中读取一个字符并送入ch中。中。9.3.1 向文件读写字符向文件读写字符1.读字符函数读字符函数fgetcn说明:说明:1)要读取的文件必须以要读取的文件必须以读读或或读写方式读写方式打开打开2)在文件内部有一个在文件内部有一个位置指针位置指针。用来指向文。用来指向文件的当前读写字节。件的当前
14、读写字节。n在文件打开时,该指针指向文件的第一个字节。在文件打开时,该指针指向文件的第一个字节。n调用调用fgetc 函数后,该位置指针将向后移动一函数后,该位置指针将向后移动一个字节。个字节。3)函数的返回值:函数的返回值:n当读字符成功时,返回所读的字符;当读字符成功时,返回所读的字符;n失败时返回文件结束标志失败时返回文件结束标志EOF(即(即-1)。)。9.3.1 向文件读写字符向文件读写字符n文件内部的位置指针:文件内部的位置指针:文件打开时:文件打开时:读一字符后:读一字符后:例例9-1 读入读入c盘根目录下的一文本文件盘根目录下的一文本文件text1.txt,在屏幕上输出其文件内
15、容。,在屏幕上输出其文件内容。#include void main()FILE*fp;char ch;if(fp=fopen(c:text1.txt,rt)=NULL)/打开文件不成功打开文件不成功 printf(nCannot open file c:text1.txt!nStrike any key exit!);getch();exit(1);while(ch=fgetc(fp)!=EOF)/读入一字符读入一字符putchar(ch);/显示字符显示字符 fclose(fp);putchar(n);例例9-1 读入读入c盘根目录下的一文本文件盘根目录下的一文本文件text1.txt,在屏
16、幕上输出其文件内容。在屏幕上输出其文件内容。n程序执行步骤:程序执行步骤:(1)先用记事本创建一个文件)先用记事本创建一个文件text1.txt,内容,内容第一行为第一行为“我在学习用我在学习用fgetc()函数读入一字函数读入一字符。符。”,第二行为,第二行为“成功啦!成功啦!”,并将此文件,并将此文件并放在并放在C盘根目录下;盘根目录下;(2)运行程序,得到结果:)运行程序,得到结果:我在学习用我在学习用fgetc()函数读入一字符。函数读入一字符。成功啦!成功啦!9.3.1 向文件读写字符向文件读写字符2.写字符函数写字符函数fputc n函数调用一般格式:函数调用一般格式:fputc(
17、ch,fp);nch:要写的字符:要写的字符nFp:文件指针文件指针例如:例如:fputc(a,fp);9.3.1 向文件读写字符向文件读写字符2.写字符函数写字符函数fputc n调用格式:调用格式:fputc(ch,fp);n说明:说明:1)被写入的文件可以用被写入的文件可以用写写、读写读写、追加追加方式打方式打开。开。2)每写入一个字符,文件内部位置指针向后移每写入一个字符,文件内部位置指针向后移动一个字节。动一个字节。3)函数的返回值:函数的返回值:n写入成功则写入成功则,返回写入的字符,返回写入的字符,n否则返回一个否则返回一个EOF。9.3.1 向文件读写字符向文件读写字符 例例9
18、-2 从键盘输入一行字符串,写从键盘输入一行字符串,写入文件入文件text2.txt中。并将该文件内中。并将该文件内容显示在屏幕上容显示在屏幕上main()FILE*fp;char ch,outfile20;printf(输入要写入文件名?输入要写入文件名?);scanf(%s,outfile);if(fp=fopen(outfile,wt+)=NULL)printf(Cannot open this file,Strike any key exit!“);getch();exit(1);printf(输入一行字符串:输入一行字符串:n);fflush(stdin);/清空输入缓冲区清空输入缓
19、冲区while(ch=getchar()!=n)/从键盘读入一字符从键盘读入一字符fputc(ch,fp);/逐个字符写入文件逐个字符写入文件rewind(fp);/把文件内部的位置指针移到文件首把文件内部的位置指针移到文件首while(ch=fgetc(fp)!=EOF)/从文件重复地读一字符,直到碰到文件结束为止从文件重复地读一字符,直到碰到文件结束为止 putchar(ch);printf(n);fclose(fp);例例9-2从键盘输入一行字符串,写入文件从键盘输入一行字符串,写入文件text2.txt中。并将该文件内容显示在屏幕上。中。并将该文件内容显示在屏幕上。n程序运行时,由于输
20、入要写入文件名程序运行时,由于输入要写入文件名“text2.txt”中如果没有指定路径,则中如果没有指定路径,则缺省路径是当前项目的路径。缺省路径是当前项目的路径。输入要写入文件名?输入要写入文件名?text2.txt输入一行字符串:输入一行字符串:I am a student.I am a student.n程序运行结果:程序运行结果:9.3.2 向文件读写字符串向文件读写字符串n函数函数fgets和和fputs:n一次性地可从文件读出或向文件写入一次性地可从文件读出或向文件写入一个字符串。一个字符串。9.3.2 向文件读写字符串向文件读写字符串1.读字符串函数读字符串函数fgets n函数
21、调用形式为:函数调用形式为:fgets(字符数组名,字符数组名,n,文件指针,文件指针);例如:例如:fgets(str,n,fp);从从fp所指的文件中读出所指的文件中读出n-1个字符,结尾加个字符,结尾加上上0,送入字符数组,送入字符数组str中。中。9.3.2 向文件读写字符串向文件读写字符串1.读字符串函数读字符串函数fgets n调用形式:调用形式:fgets(字符数组名,字符数组名,n,文件指针,文件指针);n说明:说明:(1)在读出)在读出n-1个字符之前,如遇到了换行符或个字符之前,如遇到了换行符或EOF(文件结束符),则读结束,但将所读的(文件结束符),则读结束,但将所读的n
22、也作为也作为字符读入。字符读入。(2)函数原型)函数原型 char*fgets(char*str,int n,FILE*fp)n返回结果:读成功时返回字符数组的首地址;返回结果:读成功时返回字符数组的首地址;n不成功时返回不成功时返回NULL。9.3.2 向文件读写字符串向文件读写字符串2.写字符串函数写字符串函数fputsn函数调用形式为:函数调用形式为:fputs(字符串,文件指针字符串,文件指针)n字符串可为:字符串可为:n字符串常量字符串常量n字符数组名字符数组名n字符型指针变量。字符型指针变量。n函数原型:函数原型:int fputs(char*str,File*fp)n返回值:返回
23、值:n写入成功时返回写入成功时返回0;n否则返回非否则返回非0值。值。9.3.2 向文件读写字符串向文件读写字符串2.写字符串函数写字符串函数fputs例如:例如:fputs(“abcd“,fp);把字符串把字符串“abcd”写入到写入到fp所指的文件中。所指的文件中。例例9-3从键盘读入从键盘读入n行信息写入行信息写入MyText.txt文件文件中。接着从该文件读取内容显示到屏幕。中。接着从该文件读取内容显示到屏幕。#define n 3void main()FILE*fp;int i;char ch,st80;if(fp=fopen(MyText.txt,wt+)=NULL)printf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计实用教程 C语言程序设计实用教程课件第9章 文件的输入和输出处理 语言程序设计 实用教程 课件 文件 输入 输出 处理
![提示](https://www.31doc.com/images/bang_tan.gif)
链接地址:https://www.31doc.com/p-21713204.html