C语言程序设计(第三版) 教学课件 ppt 作者 林小茶 C_ch9

上传人:E**** 文档编号:89382684 上传时间:2019-05-24 格式:PPT 页数:42 大小:575.01KB
返回 下载 相关 举报
C语言程序设计(第三版) 教学课件 ppt 作者 林小茶 C_ch9_第1页
第1页 / 共42页
C语言程序设计(第三版) 教学课件 ppt 作者 林小茶 C_ch9_第2页
第2页 / 共42页
C语言程序设计(第三版) 教学课件 ppt 作者 林小茶 C_ch9_第3页
第3页 / 共42页
C语言程序设计(第三版) 教学课件 ppt 作者 林小茶 C_ch9_第4页
第4页 / 共42页
C语言程序设计(第三版) 教学课件 ppt 作者 林小茶 C_ch9_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《C语言程序设计(第三版) 教学课件 ppt 作者 林小茶 C_ch9》由会员分享,可在线阅读,更多相关《C语言程序设计(第三版) 教学课件 ppt 作者 林小茶 C_ch9(42页珍藏版)》请在金锄头文库上搜索。

1、C 语言程序设计,林小茶 Email: ,第9章 文件,9.1 问题提出与程序示例 9.2 文件操作的基本方法和相关概念 9.3 文件的读写操作 9.4 文件的定位,9.1 问题提出与程序示例,调试一个排序的程序,要输入10个整数,但是程序有些逻辑错误,那我们就要不止一次的输入这10个整数。 解决方法? 将数据一次性地存储在一个文件中,调试程序时从该文件中读取数据到内存中。,例9.1 编写程序从文件data.txt中读取10个整数,并在显示器上显示。 #include “stdio.h“ #include “process.h“ void main() FILE *fp; /*定义文件指针fp

2、*/ int i; printf(“nFile text:“); if (fp=fopen(“d:data.txt“,“r“)!=NULL) /*打开当前目录下的文件data.txt*/ while (!feof(fp) /*文件未结束*/ fscanf(fp,“%d“, ,定义文件指针fp,打开文件data.txt,从文件中读数据到变量i中,关闭文件,9.2 文件操作的基本方法和相关概念,数据文件是一组数据的有序集合。 如果文件存储在磁盘等外部介质上,文件中的数据就可以永久(理论上)保存。 读操作:从外部介质中将文件中的数据装入内存的操作 写操作:从内存中将数据输出到文件中的操作。 C语言提

3、供了若干可以进行读或写操作的函数。,9.2.1 数据文件,9.2 文件操作的基本方法和相关概念,在C语言中,对数据文件的所有操作都必须依靠文件类型指针来完成。 对文件进行读或写操作之前,首先必须将想要操作的数据文件与文件指针建立联系,然后通过这些文件指针来操作相应的文件。 文件类型指针的定义方式是: FILE *文件指针变量; 注意,FILE是大写字母。,9.2.2 文件类型指针,9.2 文件操作的基本方法和相关概念,FILE是一种结构类型,用来描述文件的有关信息。FILE结构类型是由系统定义的,该定义包含在stdio.h 中。详细内容请参见书。 FILE *fp; 定义了文件指针fp以后,就

4、意味着系统开辟一个FILE结构的空间,用文件指针fp指向它。,9.2.2 文件类型指针,9.2 文件操作的基本方法和相关概念,文件的打开使用fopen函数,调用fopen函数的格式为: 文件指针变量=fopen(文件名,使用文件方式); fp=fopen(“data.txt“,“r“); 以只读方式打开文本文件“data.txt”。 执行fopen调用以后,fp所指结构中的数据存储的将是磁盘文件“data.txt”的相关信息,可以说,通过fopen函数建立了fp与文件data.txt的对应关系。“r“ 指定了打开文件的方式。,9.2.3 文件的打开,9.2 文件操作的基本方法和相关概念,C语言

5、把文件看作数据流-字节的序列。 字节流或二进制流。 ASCII文件与二进制文件。 文件的存取单位:字节。 流式文件:把文件中的数据看成由字节组成的数据流,而不认为文件是由记录构成的。,9.2.3 文件的打开,9.2 文件操作的基本方法和相关概念,打开文件的函数fopen为编译系统对文件的操作提供了三个信息: (1) 打开哪个文件,用文件名指定; (2) 使用哪种方式打开文件,在双引号中指定; (3) 使用哪个文件指针与打开的文件建立联系,将返回值赋值给文件指针。 fp= fopen(“d:data.txt“,“r“); 文件的打开方式的方式共有12种,表9.1。,9.2.3 文件的打开,fop

6、en函数将返回一个文件类型的指针,指针不为空才可以继续对文件做操作。 正确打开文件的程序段一般是: if (fp=fopen(“data.txt“,“r“)=NULL) printf(“cannot open this file n“); exit(1); else 文件处理;,9.2.3 文件的打开,9.2 文件操作的基本方法和相关概念,文件操作结束以后,需要释放文件指针,使文件指针与文件“脱钩”,文件被关闭以后,就不能再对该文件进行操作。 调用fclose函数的语法格式为: fclose(文件指针); fclose(fp); 关闭与文件指针fp建立联系的文件。关闭文件的主要目的是避免文件的

7、数据丢失。因为C编译在读写文件数据时,使用了称为缓冲文件系统的技术。,9.2.4 文件的关闭,图9.2 缓冲文件系统,9.2 文件操作的基本方法和相关概念,第一步:定义文件指针; 第二步:打开文件,并判断是否成功打开, 若打开文件失败,程序退出运行状态; 第三步:对文件进行读写等操作; 第四步:关闭文件。,9.2.5 文件操作顺序,FILE *fp; /*定义文件指针*/ if (fp=fopen(“A.dat“,“r“)=NULL) /*打开文件,并判断是否成功打开*/ printf(“cannot open this file n“); /*打开失败,退出运行*/ exit(0); els

8、e 文件的读写等操作; fclose(fp); /*关闭文件*/ ,9.2 文件操作的基本方法和相关概念,9.2 文件操作的基本方法和相关概念,C语言将与主机相联的各种外部设备,如显示器、打印机、键盘等外部设备也看作是一个文件,把向显示器和打印机的输出看作是于对该设备文件的写操作,而将从键盘的输入看作是于对该设备文件的读操作。 设备文件的标准输入文件(键盘)stdin、标准输出文件(显示器)stdout和标准出错输出(出错信息)stderr是由系统打开的,不需要定义文件指针、打开文件和关闭文件,这些工作都由系统自动完成。,9.2.6 C语言的设备文件,9.2 文件操作的基本方法和相关概念,pr

9、intf是向标准输出设备显示器输出数据,而scanf是从标准输入文件上输入数据。对标准输出文件和标准输入文件的操作不需要使用文件指针,由系统自动完成。,9.2.6 C语言的设备文件,语言提供了下面几组函数用于文件的读写操作: (1) 字符读写函数:fgetc和fputc (2) 格式化读写函数:fscanf和fprinf (3) 数据块读写函数:fread和fwrite (4) 字符串读写函数:fgets和fputs,9.3 文件的读写操作,9.3.1 fputc函数与fgetc函数,9.3 文件的读写操作,1写一个字符到文件中的函数fputc 调用fputc函数的语法格式为: fputc(字

10、符表达式 , 文件指针); 功能:向文件指针指定的文件中写一个字符,字符表达式表示了一个字符,可以是字符常量或字符变量。 fputc(H,fp); 向文件指针fp指定的文件中写字符H。,例9.2编写程序接收键盘输入的一行字符,并将其写入一个文件。 #include “stdio.h“ #include “process.h“ void main() FILE *fp; /*定义文件指针*/ char c; if(fp=fopen(“A.dat“,“w“)=NULL) /*打开文件*/ printf(“cannot open this file n“); /*打开失败,程序退出运行*/ exit

11、(1); else for (c=getchar(); c!=n; c=getchar() /*循环从键盘接收字符*/ fputc(c,fp); /*写字符到文件中*/ fclose(fp); /*关闭文件*/ ,9.3 文件的读写操作,文件内部位置指针: 文件内部位置指针所指的位置是每一次 读写操作的开始位置,而每一次读写操作以 后,系统会使文件内部位置指针自动移动到 下一次开始的位置,文件内部位置指针不需 在程序中定义和使用,而是由系统自动设置 的。,9.3.1 fputc函数与fgetc函数,9.3 文件的读写操作,2. 从文件中读一个字符的函数fgetc 调用fgetc函数的语法格式为

12、: fgetc(文件指针); 功能:从文件指针指定的文件中读入一个字符,该字符的ASCII值作为函数的返回值,若返回值为EOF,说明文件结束,EOF是文件结束标志,值为-1。 c=fgetc(fp); 从文件指针fp指定的文件中读一个字符并存入c变量中,c是字符型变量。,例9.3编写程序将例10.2中建立的文件A.dat的内容在屏幕上显示。 #include “stdio.h“ #include “process.h“ void main() FILE *fp; /*定义文件指针*/ char c; if(fp=fopen(“A.dat“,“r“)=NULL) /*打开文件*/ printf(

13、“cannot open this file n“); exit(1); /*打开失败,程序退出运行*/ else for (c=fgetc(fp); c!=EOF; c=fgetc(fp) /*循环从文件中读入字符*/ putchar(c); /*在显示器上显示*/ fclose(fp); /*关闭文件*/ ,例9.4编写程序在文件A.dat中追加内容“ you”。 #include “stdio.h“ #include “process.h“ void main() FILE *fp; /*定义文件指针*/ char *p; char string=“ you “; /*准备加入文件的字符

14、串*/ if(fp=fopen(“A.dat“,“a“)=NULL) /*打开文件*/ printf(“cannot open this file n“); exit(1); /*打开失败,程序退出运行*/ else for (p=string; *p!=0; fputc(*p,fp) /*循环将字符串中的字符写到文件*/ p+; fclose(fp); /*关闭文件*/ ,9.3.2 fprintf函数与fscanf函数,9.3 文件的读写操作,fprintf和fscanf函数与scanf和printf 函数的功能十分相似,都是格式化读写函数。 fprintf和fscanf函数文件读写的是磁

15、盘数据文件,而scanf函数和printf函数读写的是标准输入文件键盘和标准输出文件显示器。 这两个函数的调用格式为: fscanf(文件指针,格式字符串,输入表列); fprintf(文件指针,格式字符串,输出表列); fscanf和fprintf两个函数适合于对ASCII文件的操作。,例9.6编写程序,接收用户输入的若干整型数,直到读入-1结束,将这些整数写入新创建的文件TEST中。 #include “stdio.h“ #include “process.h“ void main() int i; FILE *fp; /*定义文件指针*/ if (fp=fopen(“c:TEST“,“w“)!=NULL) /*打开文件TEST*/ printf(“nPlease enter int ended with 1:“); scanf(“%d“, ,运行程序,输入下列数据: 1 2 3 6 5 4 -1 TEST文件中将存储整型数据:1 2 3

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号