C语言程序设计教程 教学课件 ppt 作者 胡忭利 范翠香 第9章 文件操作

上传人:E**** 文档编号:89423315 上传时间:2019-05-25 格式:PPT 页数:24 大小:659.50KB
返回 下载 相关 举报
C语言程序设计教程 教学课件 ppt 作者 胡忭利 范翠香 第9章 文件操作_第1页
第1页 / 共24页
C语言程序设计教程 教学课件 ppt 作者 胡忭利 范翠香 第9章 文件操作_第2页
第2页 / 共24页
C语言程序设计教程 教学课件 ppt 作者 胡忭利 范翠香 第9章 文件操作_第3页
第3页 / 共24页
C语言程序设计教程 教学课件 ppt 作者 胡忭利 范翠香 第9章 文件操作_第4页
第4页 / 共24页
C语言程序设计教程 教学课件 ppt 作者 胡忭利 范翠香 第9章 文件操作_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《C语言程序设计教程 教学课件 ppt 作者 胡忭利 范翠香 第9章 文件操作》由会员分享,可在线阅读,更多相关《C语言程序设计教程 教学课件 ppt 作者 胡忭利 范翠香 第9章 文件操作(24页珍藏版)》请在金锄头文库上搜索。

1、【问题9】制作一个班级学生成绩管理系统,完成对全班45名学生、每人4科成绩的输入、输出以及统计总分、按总分排名次。,第9章 文件操作,本章介绍的文件,就是指将输入的数据和运行结果以文件的方式保存在外部介质(磁盘)上。 这样做的好处: 一是程序和数据分离,使程序可以满足不同数据处理的需要; 二是数据可以长期保存,重复使用,减少数据的反复输入; 三是以文件形式保存的运行结果,可为其它应用提供相关数据。,本章主要讲述C语言能够处理的文件形式、文件的建立、数据的存储和读出等操作。,9.1 C语言中有关文件的概念,9.1.1 文件概述,1文件的概念,所谓“文件”,一般指存储在外部存储介质(如磁盘、光盘等

2、)上数据的集合。文件的存取是按文件名进行的。,2文件的分类,普通文件是指驻留在磁盘或其它外部介质上的有序数据集合,即磁盘上的文件。,设备文件是指与主机相连的各种外部设备,如显示器、打印机、键盘等。通常把显示器定义为标准输出文件,把键盘定义为标准输入文件。,文本文件,也称ASCII文件,是一种字符流文件。它是把内存中的数据转换成相应的ASCII码值形式,存放在磁盘上。每个字符占1字节,存放字符的ASCII码。,二进制文件则是把内存中的数据按其在内存中的存储形式原样存放到磁盘上去,是一种二进制流文件。,(a) 二进制文件形式,(b) 文本文件形式,3标准输入输出文件,标准输入输出文件有三个,是外部

3、设备中的特殊文件,也称标准设备文件。, 标准输入文件,文件指针为stdin,系统指定为键盘。 标准输出文件,文件指针为stdout,系统指定为显示器。 标准错误输出文件,文件指针为stderr。系统指定输出错误信息到显示器。,4缓冲文件系统和非缓冲文件系统,(l)缓冲文件系统,是指在处理文件时,系统自动在内存区为每一个正在使用的文件开辟一个缓冲区。,(2)非缓冲文件系统,是指系统不自动开辟确定大小的缓冲区,而是由程序为每一个文件设定确定大小的缓冲区,它占用的是操作系统的缓冲区,而不是用户存储区。,ANSI C采用缓冲文件系统。,9.1.2 文件的概念,程序文件和数据文件,程序文件,即以程序的源

4、代码形成的文件;数据文件,即以程序运行时需要的原始数据和输出的结果形成的文件。,2. 数据文件的存取方式,(l)文件的输入与输出,在程序运行时,从外部文件读入数据,这一过程称为“读”文件或“取”文件,即输入。把程序的运行结果保存到磁盘上,这一过程称为“写”文件或“存”文件,即输出。,(3)顺序文件和随机文件,(2)文件的存取方式,顺序存取只能依先后次序存取文件中的数据。随机存取也称直接存取,可以直接存取文件中指定的数据。,可以进行顺序存取的文件称为顺序文件。可以进行随机存取的文件称为随机文件。,3数据文件的操作步骤,数据文件的创建和使用需要由程序完成,一般要经过以下三个步骤: (l)打开文件

5、fopen ( ) (2)读/写文件 (3)关闭文件 fclose( ),4文件名及路径,在DOS或Windows环境下,路径中的目录名是用反斜杠分开的。在C语言中,磁盘文件名的一般格式为: :. 或 :/.,5C语言中文件的结构体类型及其指针,系统对缓冲文件的访问,都是通过文件指针进行的。 文件指针是一个指向含有文件信息的结构体类型的指针。 在C语言中,此结构体类型由系统定义,在stdio.h文件中将其定义为FILE类型。其类型声明为:,typedef struct short level ; /* 缓冲区满或空的程度 */ unsigned flags ; /* 文件状态标志 */ cha

6、r fd ; /* 文件描述符 */ unsigned char hold ; /* 如无缓冲区不读取字符 */ short bsize ; /* 缓冲区大小 */ unsigned char *buffer ; /* 数据缓冲区的位置 */ unsigned char *curp ; /* 指针当前的指向 */ unsigned istemp ; /* 临时文件指示器 */ short token ; /* 用于有效性检查 */ FILE /* 指定的类型名为FILE */,9.2 文件的打开与关闭操作,打开文件,就是将一个FILE类型的指针变量指向被打开的文件的结构体变量,以便通过指针变量

7、访问该文件。,1. 文件的打开函数 fopen ( ),(1)fopen( )函数的调用格式,FILE *fp ; fp = fopen( 文件名 , 文件操作方式 ) ;,(2)文件操作方式,9.2.1 文件的打开与关闭函数,(3)fopen( )函数的返回值,该函数的返回值是一个FILE型指针。如果文件打开正确,返回值就是文件在内存中的起始地址;如果打开不成功,返回值是一个空指针值(NULL)。,为确保文件操作的正常进行,有必要在程序中检测文件是否正常打开。常用下面的程序段来打开一个文件,并检查是否打开成功。例如:以只读方式打开“d:vc98cctest1.txt”文件。,FILE *fp

8、 ; if ( ( fp = fopen ( “d:vc98cc test1.txt“ , “r“ ) ) = NULL ) printf ( “ file can not open! n “ ) ; exit ( 0 ) ; ,在VC+ 6.0 中,exit ( 0 ) 函数的在头文件是“stdlib.h”。,导致函数fopen ( ) 返回NULL的原因,大致有以下几个: 所给文件名不对(不能有空格)。 文件所在磁盘没有准备好(比如软盘未插好等)。 指定的目录不存在。 试图以“r”(读)方式打开一个不存在的文件。 正是因为有多种原因会造成文件打开失败。所以在程序中使用fopen ( ) 函

9、数时,最好用if语句来检查打开操作是否成功。,2. 文件的关闭函数 fclose( ),功能:关闭文件指针指向的文件。如果文件关闭成功,函数返回0值,文件指针变量与所指向的文件脱离,并释放文件缓冲区;如果关闭失败,函数返回EOF(表示-1),说明关闭有错。程序中可以用ferror ( ) 函数来诊断并显示错误的类型。,fclose ( 文件指针名 ) ;,9.2.2 文件的打开与关闭操作举例,【例9.1】 编写一个程序,在用户自己的目录下,用“w”方式建立一个名为“f9_1.txt”的新文件,然后将其关闭。(假设用户自己的目录为:d:vc98cc ),# include “stdio.h“ #

10、 include “stdlib.h“ main ( ) FILE *fp ; if ( ( fp = fopen (“d:vc98ccf9_1.txt“ , “w“ ) ) = NULL ) printf (“ file can not open! n“ ) ; exit ( 0 ) ; printf (“ file open OK! n“ ) ; /* 文件打开成功 */ fclose ( fp ) ; /* 关闭fp所标识的文件 */ ,9.3 文件的读写操作,9.3.1 字符读写函数,1. 写字符函数 fputc( ),fputc( ch , fp ) ;,函数功能:将ch代表的字符输

11、出到fp所指向的文件中。如果输出成功,函数返回刚写入的字符;否则返回EOF 即值(-1)。,【例9.2】编写一个程序,从键盘输入一串字符,利用写字符函数fputc ( ),将其存入到文件“d:vc98ccf9_2.txt”中。,# include “stdio.h“ # include “stdlib.h“ main ( ) FILE *fp ; int k ; char str30 ; if ( fp = fopen ( “d:vc98ccf9_2.txt“ , “w“ ) = NULL ) printf ( “file can not open! n“ ) ; exit ( 0 ) ; g

12、ets ( str ) ; /* 文件打开成功,从键盘输入一个字符串 */ for ( k = 0 ; strk ; k+ ) /* 将字符串中的字符逐个写入文件,直到遇到 0为止 */ fputc ( strk , fp ) ; fclose ( fp ) ; ,2读字符函数 fgetc( ),函数功能:从文件指针fp所指的文本文件中读取一个字符,并赋给字符型变量ch。如果读取成功,返回读出的字符;如果读到文件结束符或出错,则返回EOF(-1值)。,【例9.3】编写一个程序,从【例9.2】中建立的数据文件“f9_2.txt”中读出前5个字符,并显示在屏幕上。,ch = fgetc ( fp

13、) ;,# include “stdio.h“ # include “stdlib.h“ main ( ) FILE *fp ; int k , i ; char ch ; if ( fp = fopen ( “d:vc98ccf9_2.txt“ , “r“ ) ) = NULL ) printf ( “file can not open!n“ ) ; exit ( 0 ) ; i = 1 ; while ( i = 5 ) /* 判断读取的字符个数 */ ch = fgetc ( fp ) ; /* 从fp所指文件读一个字符给ch */ putchar ( ch ) ; /* 把ch中的字符

14、显示在屏幕上 */ i+ ; fclose ( fp ) ; ,【例9.4】编写一个程序,从键盘输入一串字符,将其写到标准输出文件“stdout”中。,# include “stdio.h“ main ( ) int k ; char str30 ; gets ( str ) ; for ( k = 0 ; strk ; k+ ) fputc ( strk , stdout ) ; /* stdout指向标准的输出文件 */ ,运行程序,输入:abcd 输出:abcd,9.3.2 字符串读写函数,1写字符串函数 fputs( ),fputs( str , fp ) ;,功能:将str代表的字符

15、串写入fp指向的文件中,字符串末尾的“0”不予写入。若该函数执行正确,返回写入文件的实际字符个数,文件内部指针会自动后移到新的写入位置;如果执行错误,则返回EOF值(即-1)。,2读字符串函数fgets( ),fgets( str , n , fp ) ;,功能:该函数的功能是从文件指针fp所指向的文件中最多读取n-1个字符,将读入的字符串存到str中。若操作成功,返回读取的字符串,否则返回NULL。,【例9.5】将字符串 “Beijing”、“Shanghai”、“Xian”、“Dalian” 写入文件“d:vc98cc f9_5.txt”中,然后再从文件中读出来,并显示在屏幕上。,# include “stdio.h“ # include “stdlib.h“ main ( ) FILE *fp ; char str1410 = “Beijing“ , “Shanghai“ , “Xian“ , “Dalian“ , str2410 ; int i ; if ( ( fp = fopen ( “d:vc98ccf9_5.txt “

展开阅读全文
相关资源
相关搜索

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

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