C语言程序设计对文件的输入输出.pptx
《C语言程序设计对文件的输入输出.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计对文件的输入输出.pptx(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/3/231第10章 文件10.1 文件的概念10.2 文本文件的读写10.3 二进制文件的读写第1页/共51页2023/3/232文件文件:存储在外部存储介质外部存储介质上相关数据数据的集合。例如:程序文件中保存着程序,数据文件中保存着数据。程序文件:文件的内容是程序代码;*.C CPPPP C语言的源程序文本文件*.OBJOBJ 目标文件二进制文件*.EXEEXE 可执行文件二进制文件 数据文件:是供程序运行时读写的数据,如在程序运行过程中输出到磁盘(或其他外部设备)的数据,或在程序运行过程中供读入的数据。如一批学生的成绩数据,或货物交易的数据等。10.1 文件的概述1 10 0.
2、1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针1.1.什么是文件什么是文件什么是文件什么是文件 第2页/共51页在以前各章中所处理的数据的输入和输出,从终端的键盘输入数据,运行结果输出到终端显示器上;常常需要将一些数据输出到磁盘上保存起来,以后使用,这就要用到磁盘文件。l l操作系统把各种设备都统一作为文件处理操作系统把各种设备都统一作为文件处理l l从操作系统的角度看,每一个与主机相联的输入输出设备都看作是文从操作系统的角度看,每一个与主机相联的输入输出设备都看作是文件。例如,件。例如,终端键盘是输入文件终端键盘是输入文件 显示屏和打印机是输出文件显示屏和打印机是输
3、出文件10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针1.1.什么是文件什么是文件什么是文件什么是文件 第3页/共51页输入输出是数据传送的过程,数据如流水一样从一处流向另一处,因此常将输入输出形象地称为流(stream),即数据流。流表示了信息从源到目的端的流动。语言把文件看作是一个字符(或字节)的序列。一个输入输出流就是一个字符流或字节(内容为二进制数据)流。10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针1.1.什么是文件什么是文件什么是文件什么是文件 第4页/共51页文件
4、要有一个唯一的文件标识,以便用户识别和引用。文件标识包括三部分:(1)文件路径(2)文件名主干(3)文件后缀10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针2 2.文件名文件名文件名文件名 第5页/共51页文件路径表示文件在外部存储设备中的位置。如:D:CCtempfile1.dat表示file1.dat文件存放在D盘中的CC目录下的temp子目录下面文件路径文件名主干文件后缀10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针2 2.文件名文件名文件名文件名 第6页/共51页文件路
5、径表示文件在外部存储设备中的位置。如:D:CCtempfile1.dat表示file1.dat文件存放在D盘中的CC目录下的temp子目录下面文件名10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针2 2.文件名文件名文件名文件名 第7页/共51页文件路径表示文件在外部存储设备中的位置。如:D:CCtempfile1.dat表示file1.dat文件存放在D盘中的CC目录下的temp子目录下面命名规则遵循标识符的命名规则10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针2 2.文件名
6、文件名文件名文件名 第8页/共51页文件路径表示文件在外部存储设备中的位置。如:D:CCtempfile1.dat表示file1.dat文件存放在D盘中的CC目录下的temp子目录下面一般不超过3个字母(doc、txt、dat、c、cpp、obj、exe、ppt、bmp等)10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针2 2.文件名文件名文件名文件名 第9页/共51页2023/3/2310数据文件存储数据的形式数据文件存储数据的形式 ASCII文件(或称文本文件文本文件)ASCII码文件中每每个个字字节节存放一个ASCII代码,代表一
7、个字符,此种存储形式便于输出显示,在DOS操作系统下可以直接阅读。二进制文件二进制文件 二二进进制制文文件件中的数数据据是按照在内存中的二二进进制制存存储储格格式式存放的,此种存储形式节省存储单元。二二进进制制文件文件在DOS操作系统下不能直接阅读。10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针3 3.数据文件的种类数据文件的种类数据文件的种类数据文件的种类 第10页/共51页2023/3/231110.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针l l字符一律以字符一律以ASC
8、IIASCII形式存储形式存储l l数值型数据既可以用数值型数据既可以用ASCIIASCII形式存储,也可以形式存储,也可以用二进制形式存储用二进制形式存储。如有整数如有整数1000010000,如果用,如果用ASCIIASCII码形式输出到码形式输出到磁盘,则在磁盘中占个字节磁盘,则在磁盘中占个字节(每一个字符占每一个字符占一个字节一个字节),而用二进制形式输出,则在磁盘,而用二进制形式输出,则在磁盘上只占上只占4 4个字节个字节(用用VC+VC+时时)3 3.数据文件的种类数据文件的种类数据文件的种类数据文件的种类 第11页/共51页2023/3/2312例如将整数1 100000000分
9、别存储在这两种数据文件中。10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针0011000100110000001100000011000000110000(1)(0)(0)(0)(0)ASCII形式形式00000000000000000010011100010000二进制形式二进制形式(10000)3 3.数据文件的种类数据文件的种类数据文件的种类数据文件的种类 第12页/共51页4.文件缓冲区文件缓冲区ANSI C标准采用“缓冲文件系统”处理数据文件.10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和
10、文件指针文件和文件指针程序数据区程序数据区输出文件缓冲区输出文件缓冲区输入文件缓冲区输入文件缓冲区l缓冲文件系统:指指系统自动地在内存系统自动地在内存区为程序中每一个区为程序中每一个正在使用的文件开正在使用的文件开辟一个文件缓冲区辟一个文件缓冲区。第13页/共51页程序数据区程序数据区输出文件缓冲区输出文件缓冲区输入文件缓冲区输入文件缓冲区磁盘磁盘从内存向磁盘输出数据从内存向磁盘输出数据装满缓冲区装满缓冲区3.文件缓冲区文件缓冲区10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针第14页/共51页程序数据区程序数据区输出文件缓冲区输出文件
11、缓冲区输入文件缓冲区输入文件缓冲区磁盘磁盘从磁盘向计算机读入数据从磁盘向计算机读入数据充满缓冲区充满缓冲区4.文件缓冲区文件缓冲区10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针第15页/共51页缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”每个被使用的文件都在内存中开辟一个相应的文件信息区,用来存放文件的有关信息(如文件的名字、文件状态及文件当前位置等)这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的,取名为FILE5.5.文件类型指针文件类型指针10.1 文件的概述1 10 0.1.1.1.1 文件和文
12、件指针文件和文件指针文件和文件指针文件和文件指针第16页/共51页声明FILE结构体类型的信息包含在头文件“stdio.h”中一般设置一个指向FILE类型变量的指针变量,然后通过它来引用这些FILE类型变量5.5.文件类型指针文件类型指针10.1 文件的概述1 10 0.1.1.1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针第17页/共51页FILE*fp1,*fp2,*fp3;文件文件f1的的文件信息区文件信息区fp1文件文件f2的的文件信息区文件信息区fp2文件文件f3的的文件信息区文件信息区fp35.5.文件类型指针文件类型指针10.1 文件的概述1 10 0.1.1.
13、1.1 文件和文件指针文件和文件指针文件和文件指针文件和文件指针第18页/共51页2023/3/231913.1 文件的概述13.1.2 13.1.2 文件的打开与关闭文件的打开与关闭文件的打开与关闭文件的打开与关闭 操作文件的一般步骤操作文件的一般步骤 打开文件打开文件 读写文件读写文件 关闭文件关闭文件打开文件打开文件打开文件打开文件:建立建立建立建立用户程序与文件的用户程序与文件的用户程序与文件的用户程序与文件的联系联系联系联系,为文件,为文件,为文件,为文件分分分分 配配配配一个文件缓冲区。一个文件缓冲区。一个文件缓冲区。一个文件缓冲区。读写文件读写文件读写文件读写文件:是指对文件的:
14、是指对文件的:是指对文件的:是指对文件的读读读读、写写写写、追加追加追加追加和和和和定位定位定位定位操作。操作。操作。操作。关闭文件关闭文件关闭文件关闭文件:切断切断切断切断文件与程序的文件与程序的文件与程序的文件与程序的联系联系联系联系,释放释放释放释放文件缓冲文件缓冲文件缓冲文件缓冲 区。区。区。区。C C语言的输入输出函数库中提供了大语言的输入输出函数库中提供了大量的函数,用于完成对数据文件的建立、量的函数,用于完成对数据文件的建立、数据的读写、数据的追加等操作。数据的读写、数据的追加等操作。在程序中在程序中调用调用这些这些函数函数时,必须先用时,必须先用includeinclude命令
15、包含命令包含stdio.hstdio.h文件。文件。第19页/共51页2023/3/2320常用的常用的调用调用形式:形式:FILE FILE *fp;fp=fopen(文件名文件名,文件使用方式文件使用方式);文件名文件名:需要打开的文件名称(字符串字符串)。文件使用方式文件使用方式:是具有特定含义的符号符号。10.1 文件的概述 1 10 0.1.2.1.2 文件的打开与关闭文件的打开与关闭文件的打开与关闭文件的打开与关闭 1.1.文件打开函数文件打开函数文件打开函数文件打开函数fopen(fopen(fopen(fopen()函数功能:函数功能:函数功能:函数功能:按指定的按指定的文件使
16、用方式文件使用方式打开指定的打开指定的文件文件。若文件打开若文件打开成功成功,为该文件分配一个文件缓冲区和一个,为该文件分配一个文件缓冲区和一个FILEFILEFILEFILE类型变量,返回一个类型变量,返回一个FILEFILEFILEFILE类型类型指针指针;若文件打开若文件打开失败失败,返回,返回NULLNULLNULLNULL。第20页/共51页2023/3/2321l l文本文件的三种基本使用方式文本文件的三种基本使用方式”r r r r”:只读方式只读方式 为读(输入)文本文件打开文件。若文件不存在,返回NULLNULL。”w w w w”:只写方式只写方式 为写(输出)文本文件打开
17、文件。若文件不存在,则建立一个新文件;若文件已存在文件已存在,则清空文件清空文件。”a a a a”:追加方式追加方式 为写(输出)文本文件打开文件。若文文件件已已存存在在,则保保持持原来文件的内内容容,将新的数据增加增加到原来数据的后面后面;若文件不存在,则返回NULLNULL。10.1 文件的概述 1 10 0.1.2.1.2 文件的打开与关闭文件的打开与关闭文件的打开与关闭文件的打开与关闭第21页/共51页2023/3/2322l l二进制文件的三种基本使用方式二进制文件的三种基本使用方式”r r r rb b b b”:只读方式只读方式 为读(输入)二进制文件打开文件。若文件不存在,返
18、回NULLNULLNULLNULL。”w w w wb b b b”:只写方式只写方式 为写(输出)二进制文件打开文件。若文件不存在,则建立一个新文件;若文件已存在文件已存在,则清空文件清空文件。”a a a ab b b b”:追加方式追加方式 为写(输出)二进制文件打开文件。若文文件件已已存存在在,则保保持持原来文件的内内容容,将新的数据增加增加到原来数据的后面后面;若文件不存在,则返回NULLNULLNULLNULL。10.1 文件的概述 1 10 0.1.2.1.2 文件的打开与关闭文件的打开与关闭文件的打开与关闭文件的打开与关闭第22页/共51页2023/3/232310.1 文件的
19、概述 1 10 0.1.2.1.2 文件的打开与关闭文件的打开与关闭文件的打开与关闭文件的打开与关闭文件的其他打开方式文件的其他打开方式”r r+”:可以对文本文件文本文件进行读读/写写操作。若文件不存在返回NULLNULL;若文件存在内容不内容不被清空清空。”w w+”:可以对文本文件文本文件进行读读/写写操作。若文件已经存在,则先清空清空文件原来的内容内容。”a a+”:可以对文本文件文本文件进行读读/追加追加操作。文件内容不会清空。”r rb b+”:可以对二进制文件二进制文件进行读读/写写操作。”w wb b+”:可以对二进制文件二进制文件进行读读/写写操作。”a ab b+”:可以对
20、二进制文件二进制文件进行读读/追加追加操作。第23页/共51页2023/3/2324检查文件打开操作是否成功检查文件打开操作是否成功 if(fp=fopen(filenamefilename,r r)=NULLNULL)printf(”Cannot open file.n”);exit(0)exit(0);检查以只只读读方式打开文件名为filenamefilename的文件是否成功。exitexit函数的作用:关闭所有文件,终止正在执行的程序。10.1 文件的概述 1 10 0.1.2.1.2 文件的打开与关闭文件的打开与关闭文件的打开与关闭文件的打开与关闭第24页/共51页2023/3/23
21、25常用的常用的调用调用形式:形式:FILE FILE *fp;fclose(fpfp);fp fp:已经打开的文件指针。10.1 文件的概述 1 10 0.1.2.1.2 文件的打开与关闭文件的打开与关闭文件的打开与关闭文件的打开与关闭 2.2.文件关闭函数文件关闭函数文件关闭函数文件关闭函数fclose(fclose(fclose(fclose()函数功能:函数功能:关闭关闭关闭关闭fpfpfpfp指定的文件,释放该文件的缓冲区、指定的文件,释放该文件的缓冲区、指定的文件,释放该文件的缓冲区、指定的文件,释放该文件的缓冲区、FILEFILEFILEFILE类型变量及文件指针。类型变量及文件
22、指针。类型变量及文件指针。类型变量及文件指针。若文件关闭成功,则返回若文件关闭成功,则返回若文件关闭成功,则返回若文件关闭成功,则返回0 0 0 0;若文件关闭失败,则返回若文件关闭失败,则返回若文件关闭失败,则返回若文件关闭失败,则返回非非非非0 0 0 0值。值。值。值。第25页/共51页2023/3/2326常用的常用的调用调用形式:形式:FILE FILE *fp;fputc(chch,fpfp);chch:需要输出的字符,可以是字符常量或字符变量;fp fp:文件指针变量。10.2 文本文件的读写 1 10.2.1 0.2.1 文件的字符输入输出函数文件的字符输入输出函数文件的字符输
23、入输出函数文件的字符输入输出函数 1.1.字符输出函数字符输出函数字符输出函数字符输出函数fputc(fputc(fputc(fputc()(或或或或putc(putc(putc(putc())函数功能:函数功能:将一个字符(将一个字符(ASCIIASCIIASCIIASCII码)写入到码)写入到fpfpfpfp所指向的文件(该文件所指向的文件(该文件必须是以写或读写方式打开的)中。必须是以写或读写方式打开的)中。若输出操作成功,函数返回写入的字符;否则,返回若输出操作成功,函数返回写入的字符;否则,返回EOFEOFEOFEOF。系统定义的文本文件结束标志,其值为(-1)。putcputc函函
24、数数与与fputcfputc函函数数的的功功能能相相同同。在在stdio.hstdio.h文件中被定义为文件中被定义为#define putc(c,f)fputc(c),f)define putc(c,f)fputc(c),f)标标准准文文件件中中用用的的putcharputchar函函数数是是fputcfputc函函数数的的特殊用法,它在特殊用法,它在stdio.hstdio.h文件中被定义为文件中被定义为#define putchar(c)putc(c),stdout)define putchar(c)putc(c),stdout)第26页/共51页2023/3/2327常用的常用的调用调
25、用形式:形式:FILE FILE *fp;chch =fgetcfgetc(fpfp);chch:可以是字符变量或整型变量;fp fp:文件指针变量。10.2 文本文件的读写 1 10.2.1 0.2.1 文件的字符输入输出函数文件的字符输入输出函数文件的字符输入输出函数文件的字符输入输出函数 2.2.字符输入函数字符输入函数字符输入函数字符输入函数fgetc(fgetc(fgetc(fgetc()(或或或或getc(getc(getc(getc())函数功能:函数功能:从从fpfpfpfp所指向的文件(该文件必须是以读或读写方式打开所指向的文件(该文件必须是以读或读写方式打开的)中读取一个字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 文件 输入输出
限制150内