C语言第八次作业答案.ppt
《C语言第八次作业答案.ppt》由会员分享,可在线阅读,更多相关《C语言第八次作业答案.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第九章 文件9.1 文件概述9.2 文件的打开和关闭9.3 文本文件的输入和输出9.4 二进制文件的输入和输出9.5 其他文件库函数定位函数出错监测函数9.1 文件概述文件是存储在外部介质上的数据的集合,由操作系统来管理。最常用的是磁盘(硬盘、U盘、光盘等)文件。从文件数据的组织形式看文件可分为文本文件和二进制文件。源程序文件一般是文本文件。数据文件可是文本文件,也可是二进制文件。C语言把文件都看作“字节流”文件,也称“流式文 件”,对文件的读写是以字节为单位的。C语言中的文本文件的每个字节代表一个字符,存放的是该字符的ASCII码。C语言中的二进制文件是把数据按其在内存中的存储形式照原样输出
2、到磁盘上。C语言中对文件处理的方法可分为两种:缓冲文件系统 系统自动为打开的文件开辟其各自的内存缓冲区,本章介绍的文本文件和二进制文件都属此种。非缓冲文件系统 系统不自动开辟内存缓冲区,而由用户根据需要在程序中设定。9.2 文件的打开和关闭文件类型(FILE)指针fopen函数fclose函数文件类型(FILE)指针FILE类型类型 处理一个文件应知它的各种信息,这些信息由系统将其构处理一个文件应知它的各种信息,这些信息由系统将其构成一个结构体类型,取名成一个结构体类型,取名 FILE,谓之谓之文件类型文件类型,其定义放,其定义放在在stdio.h头文件中。头文件中。typedef struc
3、t short level;/*fill/empty level of buffer*/unsigned flags;/*File status flags*/char fd;/*File descriptor*/unsigned char hold;/*Ungetc char if no buffer*/short bsize;/*Buffer size*/unsigned char *buffer;/*Data transfer buffer*/unsigned char *curp;/*Current active pointer*/unsigned istemp;/*Temporary
4、 file indicator*/short token;/*Used for validity checking*/FILE;FILE类型指针包含了stdio.h头文件就可用FILE来定义文件类 型的指针变量。如:FILE *fp;可以使fp指向某一文件的结构体变量,从而可通过读取该结构体变量中的各项信息来实现对该文件的操作。一个文件指针用来操作一个文件。如有n个文件,一般应定义n个文件类型指针变量来分别指向n个文件。fopen-文件打开函数原型:FILE*fopen(char*filename,char*mode);调用时:filename(文件名)为要打开文件的文件名(字符串),可写成:
5、test.dat 或定义过 char s =test.dat;则写 s ;或定义过 char*pc=test.dat;则写 pc;或定义过#define ff test.dat;则写 ff。mode 为文件使用方式或称打开方式,可以是:r 只读,为输入打开一个文本文件;w 只写,为输出打开一个文本文件;a 追加,向文本文件尾追加数据;rb 只读,为输入打开一个二进制文件;wb 只写,为输出打开一个二进制文件;ab 追加,向二进制文件尾追加数据;r+读写,为读/写打开一个文本文件;w+读写,为读/写建立一个新文本文件;a+读写,为读/写(追加)打开一个文本文件;“rb+”读写,为读/写打开一个二
6、进制文件;wb+读写,为读/写打开一个二进制文件;ab+读写,向读/写二进制文件尾追加数据;打开文件常用如下语句:if(fp=fopen(file1.dat,r)=NULL)printf(cannot open this file.n);exit();如果调用fopen()成功,返回一文件类型指针,否则返回一空指针。其中exit()是个进程控制库函数,其作用是关闭所有文件,终止程序运行。格式为:void exit(int status)fclose-文件关闭函数原型:int fclose(FILE *fp)如果文件关闭成功,返回0,如检测到任何错误,则返回EOF(即-1,在头文件stdio.h
7、中定义)任何已经打开的文件在文件使用结束后,应用fclose 函数及时关闭。程序结束时,程序中打开的所有文件会被自动关闭。9.3 文本文件的输入输出读写一个字符的函数fgetc()和fputc()字符串读写函数-fgets()和fputs()格式化读写函数-fscanf()和fprintf()1 读写字符函数1)读字符函数-fgetc()格式:int fgetc(FILE *fp)功能:从一打开的文件中读一个字符,返回该字 符。文件中有一个指向当前位置的指针自动后移 一个字符。反复调用可一直读到文件结束。文件 结束或出错时,返回EOF。C语言还提供了一个检测文件结束函数:int feof(FI
8、LE*fp)如果文件结束,返回非0值,否则返回0。【例9.1】设计程序读一个源程序文件,并在屏幕上显示。源程序文件名为:“e:hello.c”。#include stdio.hmain()FILE*fp;char ch;if(fp=fopen(“e:hello.c,r)=NULL)printf(cannot open this file.n);exit();ch=fgetc(fp);while(feof(fp)=0)putchar(ch);ch=fgetc(fp);fclose(fp);其中:ch=fgetc(fp);while(feof(fp)=0)putchar(ch);ch=fgetc(
9、fp);也可写成:while(!feof(fp)ch=fgetc(fp);putchar(ch);或:while(ch=fgetc(fp)!=EOF)putchar(ch);2)写字符函数fputc()格式:int fputc(char ch,FILE *fp)功能:将字符 ch 写到fp指向的文件中去,成功,则返回该字符,否则返回EOF。【例9.3】将字符串“Welcome Freshman!”写入e:下名为“file1.txt”的磁盘文件中。#include stdio.hmain()FILE*fp;char ch;if(fp=fopen(“E:file1.txt,w)=NULL)prin
10、tf(cannot open this file.n);exit();while(ch=getchar()!=n)fputc(ch,fp);fclose(fp);运行时输入:运行时输入:Welcome Freshman2 读写字符串函数1)读字符串函数-fgets()格式:char*fgets(char*buf,int max,FILE*fp);功能:从fp指定的文件读取长度为max-1的字符串存入起始地址为buf的内存空间,自动加结束标志0,共占n个字符,返回值为地址buf。若在未读足max-1个字符前遇到换行符n或文件结束就停止读取。若读到文件末尾或出错,则返回NULL值2)写字符串函数-
11、fputs()格式:int fputs(char*buf,FILE*fp);其中buf可以是字符串常量字符串常量,字符数组名字符数组名或字符指针字符指针。功能:将buf指向的字符串写到fp指定的文件。但不输出字符串结束符。写成功,则返回所写的最后一个字符,否则返回EOF值。例例:(填空填空):从键盘上输入一个字符串从键盘上输入一个字符串,把其中的小写字母改把其中的小写字母改成大写成大写,输出到文件输出到文件t test.txt中中,然后从该文件读出此字符然后从该文件读出此字符串并显示。串并显示。#include main()FILE *fp;char str100;int i=0;gets(s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第八 作业 答案
限制150内