C语言程序设计-第12章-文件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言程序设计-第12章-文件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 12 文件
- 资源描述:
-
1、 第12章 文件程序设计技术基础-C语言本章重点内容(1)文本文件和二进制文件(2)文件的打开与关闭(3)文件的顺序读写与随机读写2022-8-82程序设计技术基础-C语言12.1 文件的基本概念 12.1.1 文件概述 所谓“文件”一般是指存储在外部介质上的一组数据的有序集合。C语言将文件看作是字符(字节)序列,即一个一个字符(字节)的数据顺序组成。2022-8-83程序设计技术基础-C语言12.1 文件的基本概念 12.1.2 文件的分类 1.从用户的角度看,文件可分为普通文件和设备文件。2.按文件存储数据的内容来分,文件可分为程序文件和数据文件。3按文件中数据的存储方式来分,文件可分为文
2、本文件(也称ASCII文件)和二进制文件。2022-8-84程序设计技术基础-C语言12.1 文件的基本概念 12.1.3 缓冲文件系统 缓冲文件系统,又称为标准文件系统。当使用标准I/O函数(包含在头文件stdio.h中)时,系统会自动在内存为程序中每一个正在使用的文件开辟一个“缓冲区”,作为程序与数据文件之间数据交换的中间媒介。2022-8-85程序设计技术基础-C语言12.2 文件的操作流程 对于缓冲文件系统,用户程序使用一个文件的操作流程通常为4个步骤:定义文件类型指针、打开文件、读写操作、关闭文件。2022-8-86程序设计技术基础-C语言12.3 文件的打开与关闭 12.3.1 文
3、件的打开 打开文件通过系统提供的fopen函数实现。其函数调用的形式为:文件指针名=fopen(文件名,使用文件方式);2022-8-87程序设计技术基础-C语言12.3.1 文件的打开 说明:1.“文件指针名”:文件指针名必须是被说明为FILE 类型的指针变量。fopen函数在执行时返回一个FILE类型的指针,通常赋给一个文件指针变量。例如:FILE*fp;fp=fopen(file a,r);2022-8-88程序设计技术基础-C语言12.3.1 文件的打开 说明:2.“文件名”:是被打开文件的文件名,可以包含路径和文件名两部分。例如:FILE*fp;fp=(d:abc.txt,r);其意
4、义是打开D盘根目录下的abc.txt文件。2022-8-89程序设计技术基础-C语言12.3.1 文件的打开 说明:3.“使用文件方式”:表示文件的打开方式,指文件的类型和操作要求。使用文件方式的取值共有12种,表12-1给出了其每种取值及含义。2022-8-810程序设计技术基础-C语言12.3.1 文件的打开 2022-8-811“使使用文件方用文件方式式”的取的取值值含义含义R以只读方式,打开一个文本文件。只允许读取,不允许写入。该文件必须存在,文件不存在时,返回错误标识。W 以只写方式,创建并打开一个文本文件。只允许写入,不允许读取。文件不存在时,建立新文件。文件存在时,原文件被覆盖。
5、A以追加方式打开一个文本文件。只允许写入。文件存在时,打开文件,只能从文件尾向文件追加数据,文件原先的内容会被保留。文件不存在时,建立新文件。r+以读写方式打开一个文本文件。允许读取和写入。该文件必须存在,文件不存在时,返回错误标识。w+以读写方式建立一个新的文本文件。允许读取和写入。文件存在时,打开文件,原文件内容清空。文件不存在时,建立新文件。a+以追加方式打开可读写的文本文件。允许读取和写入。如果文件不存在,建立新文件。如果文件存在,可从文件中读取或往文件中写入数据,写入的数据会被加到文件尾后,文件原先的内容会被保留。rb以只读方式打开一个二进制文件。只允许读取,不允许写入。该文件必须存
6、在,文件不存在时,返回错误标识。wb以只写方式打开一个二进制文件。只允许写入。文件存在时,打开文件,原文件内容清空。文件不存在时,建立新文件。ab以追加方式打开一个二进制文件。文件存在时,打开文件,从文件尾向文件追加数据。文件不存在时,建立新文件。rb+以读写方式打开一个二进制文件。允许读取和写入。该文件必须存在。如果文件不存在时,返回错误标识。wb+以读写方式建立一个新的二进制文件。允许读和写文件存在时,打开文件,原文件内容清空。文件不存在时,建立新文件。ab+以读写方式打开一个二进制文件。文件存在时,打开文件,可从文件读取或往文件中写入数据。文件不存在时,建立新文件。程序设计技术基础-C语
7、言12.3.1 文件的打开 说明:“使用文件方式“的取值由r、w、a、t、b、+六个字符拼成,各字符的含义如下。r(read):读取数据w(write):写入数据a(append):追加数据t(text):文本文件,可省略不写b(banary):二进制文件+:可读取和写入 2022-8-812程序设计技术基础-C语言12.3.2 文件的关闭C语言中,关闭文件通过系统提供的fclose函数实现。函数调用的形式为:fclose(文件指针);关闭文件就是使原来指向该文件的文件指针与文件脱离,以便再使用该文件指针时,不会对该文件进行读写操作,除非再次打开该文件。fclose函数的返回值有两种:0和非零
8、值。正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示文件关闭失败。例如:fclose(fp);前面把打开文件时函数返回的指针赋给了fp,现在把fp指向的文件关闭,此后fp不再指向该文件。2022-8-813程序设计技术基础-C语言12.4 文件的顺序读写 文件打开之后,就可以对它进行读写操作了。文件的顺序读写是指文件被打开之后,读写数据的顺序和数据在文件中的物理顺序是一致的,即读写文件只能从头开始,每读写一次后,文件读写位置标记会自动指向下一个位置。在C语言中,常见的文件的读写方式包括:按字符读写文件、按字符串读写文件、按格式读写文件和按数据块读写文件。这几种读写操作都是
9、通过函数调用来实现的,使用这些函数都要求包含头文件stdio.h。2022-8-814程序设计技术基础-C语言12.4 文件的顺序读写 12.4.1 按字符读写文件按字符读写文件是以字符(字节)为单位对文件进行读写操作。每次可从文件读出一个字符或向文件写入一个字符。C语言提供了按字符方式读写文件的函数:写字符函数fputc和读字符函数fgetc。1写字符函数:fputc函数函数调用的形式为:fputc(字符量,文件指针);功能:把一个字符写入文件指针所指的文件中。例如:fputc(w,fp);其意义是把字符“w”写入fp所指向的文件中。2022-8-815程序设计技术基础-C语言12.4 文件
10、的顺序读写 12.4.1 按字符读写文件1写字符函数:fputc函数说明:(1)参数“字符量”是要输出的字符,它可以是一个字符常量,也可以是一个字符变量。(2)被写入的文件可以用写、读写,追加方式打开,用写或读写方式打开一个已存在的文件时将清除原有的文件内容,从文件首开始写入字符。如需保留原有文件内容,希望写入的字符以文件末尾开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。(3)每写入一个字符,文件读写位置标记向后移动一个字节。(4)文件读写位置标记与文件指针的区别:在文件内部有一个文件读写位置标记,用来指向文件的当前读写字节。在文件打开时,该标记总是指向文件的第一个字节
11、,完成一次读或写后,该位置标记将向后移动一个字节。需要注意文件指针和文件读写位置标记不是同一个指针。文件指针是指向整个文件的,必须在程序中定义说明。文件读写位置标记用以指向文件内部的当前读写位置,每读写一次,该标记均向后移动,它是由系统自动设置的,不需在程序中定义说明。(5)fputc函数有一个返回值,如果写入成功则返回写入的字符,否则返回一个EOF。可用此来判断写入是否成功。EOF是在stdio.h库函数文件中定义的符号常量,值为-1。EOF也是文件的结束标志。2022-8-816程序设计技术基础-C语言12.4 文件的顺序读写 2读字符函数:fgetc函数 函数调用的形式为:字符变量=fg
12、etc(文件指针);功能:从文件指针所指向的文件中读一个字符。例如:ch=fgetc(fp);其含义是从打开的文件fp中读取一个字符并送入ch中。说明:(1)在fgetc函数调用中,读取的文件必须是以读或读写方式打开的。(2)读取字符的结果也可以不向字符变量赋值。例如:fgetc(fp);但是读出的字符不能保存。【例12-1】从键盘输入1串字符,写到磁盘文件student.txt中,以回车作为该行结束;再把该文件内容读出并显示在屏幕上。2022-8-817程序设计技术基础-C语言12.4 文件的顺序读写【例12-1】从键盘输入1串字符,写到磁盘文件student.txt中,以回车作为该行结束;
13、再把该文件内容读出并显示在屏幕上。2022-8-818#include#includeintmain()FILE*fp;charch;if(fp=fopen(student.txt,w)=NULL)printf(Fileopenerror!n);exit(0);ch=getchar();while(ch!=n)fputc(ch,fp);ch=getchar();fclose(fp);if(fp=fopen(student.txt,r)=NULL)printf(Fileopenerror!n);exit(0);ch=fgetc(fp);while(ch!=EOF)putchar(ch);ch=f
14、getc(fp);fclose(fp);return0;/*定义文件指针定义文件指针*/*打开文件打开文件student.txt*/*从键盘输入一个字符从键盘输入一个字符*/*循环写文件循环写文件*/*把字符写入文件把字符写入文件*/*关闭文件关闭文件*/*再次打开文件再次打开文件student.txt*/*从文件中读出一个字符从文件中读出一个字符*/*把字符显示在屏幕上把字符显示在屏幕上*/*关闭文件关闭文件*/程序设计技术基础-C语言12.4 文件的顺序读写 12.4.2 按字符串读写文件将字符串写入文件中可使用函数fputs,从文件中读取字符串可使用函数fgets。1.写字符串函数:fp
15、uts函数函数调用的形式为:fputs(字符串,文件指针);功能:将字符串写入文件指针所指的文件中。例如:fputs(abcd,fp);其意义是把字符串“abcd”写入fp所指的文件之中。说明:(1)fputs函数带有返回值:若写入成功返回正整数,否则返回-1(EOF)。(2)字符串结束符不被写入文件。为了读取数据方便,设法使字符串分开,常常用fputs(n,fp)语句在每个字符串后面加一个换行符n一起存入文件中。2022-8-819程序设计技术基础-C语言12.4 文件的顺序读写 12.4.2 按字符串读写文件1.写字符串函数:fputs函数【例12-2】用写字符串函数将表12-2中3名学生
16、的数据,由键盘输入并存储到磁盘文件studenttxt中。2022-8-820表表12-2学生学生信息信息学学号号姓 名成 绩20170901Zhangping25320170902Limaochang26820170903Wangwenhua245程序设计技术基础-C语言程序代码如下:#include#include#define N 3int main()int i;char string80;FILE*fp;if(fp=fopen(student.txt,w)=NULL)puts(n cant open file student.txt!n);exit(0);for(i=0;i N;i+
17、)printf(please input the student%dn,i+1);printf(number:);gets(string);fputs(string,fp);fputs(n,fp);printf(name:);gets(string);fputs(string,fp);fputs(n,fp);printf(score:);gets(string);fputs(string,fp);fputs(n,fp);fclose(fp);return 0;2022-8-821程序设计技术基础-C语言12.4 文件的顺序读写 12.4.2 按字符串读写文件2读字符串函数:fgets函数 函数
18、调用的形式为:fgets(字符数组,n,文件指针);功能:从文件指针所指的文件中读取一个字符串到字符数组中。例如:fgets(str,n,fp);其含义是从fp所指的文件中读出n-1个字符送入字符数组str中。说明:(1)该函数从文件指针所指的文件中,读取的字符串不超过 n-1个字符。当读满n-1个字符前,若遇到换行符或文件结束符(EOF),函数停止读操作,并在字符串的最后一个字符后加上一个串结束符0。需要注意的是,如果遇到换行符,fgets函数将换行符也作为字符串的一部分读取。(2)fgets函数的返回值是字符数组的首地址。若读取失败时,返回空指针NULL。2022-8-822程序设计技术基
展开阅读全文