C语言课件第九章.ppt
《C语言课件第九章.ppt》由会员分享,可在线阅读,更多相关《C语言课件第九章.ppt(48页珍藏版)》请在三一办公上搜索。
1、第9章 文件操作,1,主要内容,9.1 文件概念9.2 C文件系统9.3 利用高级I/O库函数存取文件,2,9.1 文件概念,从文件的组织形式来看,有顺序文件和索引文件。从文件的存取方式看,有顺序存取文件和随机存取文件。从文件内容的表示形式来看,有二进制文件和文本文件等。文件有各种属性,基本的属性有只读、只写、可读可写。,3,9.2 C文件系统,C语言把每一个文件都看成一个连续的、有序的谓之“流”(stream)的字节序列,流中的每一个字节都可以单独存取。文本流是一种以行为单位组织的字符序列,行以特定字符结束。二进制流是一种字节序列(请注意区分“字符”与“字节”的不同含义),没有行的概念。C语
2、言把计算机系统中的各种设备都抽象成文件。C文件系统由若干I/O函数组成。第一类为标准设备I/O函数(standard I/O)第二类为标准高级I/O函数(standard high-level I/O)第三类为低级I/O函数(low-level I/O),4,9.3 利用高级I/O库函数存取文件,9.3.1 打开文件9.3.2 读写文件9.3.3 关闭文件9.3.4 文件结尾检测与读/写错误检测9.3.5 文件定位9.3.6 其他文件操作函数,9.3 利用高级I/O库函数存取文件,C程序中利用高级I/O函数读写文件的过程与其他语言中的读写文件的过程是类似的,通常按如下的顺序进行。打开文件 读写
3、文件 若干次 关闭文件,9.3.1 打开文件,一般调用形式是:fopen(文件名,存取方式)“文件名”即为要读写文件的外部名。它可以是字符串、字符数组名、或指向文件名的一个指针,允许包含路径。文件名和路径的形式、要求与C所在的环境有关。如在DOS和Windows环境下,file1.cpp、d:cat1cat2file2.cpp a:/file3.cpp都是正确的文件名参数。,9.3.1 打开文件,“存取方式”也以字符串的形式给出,用来指出如何读写文件。,9.3.1 打开文件,“存取方式”,9.3.1 打开文件,“存取方式”,9.3.1 打开文件,fopen()函数的返回值打开文件成功:fope
4、n函数返回给调用者的返回值是一个FILE型指针(称为“文件指针”),这以后程序中便用这个指针来代替文件的外部名存取文件。打开文件失败:fopen函数给调用者返回一个NULL空指针。失败原因:文件不存在、权限不够、磁盘空间不足等。,9.3.1 打开文件,FILE结构类型(头文件stdio.h中)typedef struct short level;/*用于检查缓冲区满/空*/unsigned flags;/*文件状态标志*/char fd;/*文件描述符*/unsigned char hold;/*如果无缓冲区,退回输入字符*/short bsize;/*缓冲区大小*/unsigned char
5、*buffer;/*数据传输缓冲区*/unsigned char*curp;/*当前活动指针*/unsigned istemp;/*临时文件指示符*/short token;/*用于合法性检查*/FILE;,9.3.1 打开文件,正确的fopen调用过程:FILE*fp;if(fp=fopen(filename,mode)=NULL)puts(“Cant open file.n”);exit(1);,9.3.1 打开文件,C文件系统中的标准设备文件,9.3.2 读写文件,读写字符函数putc和getc读写字符串函数fgets与fputs 格式化读写函数fscanf与fprintf 二进制读写函
6、数fread与fwrite,9.3.2 读写文件,getc函数用来从已打开文件的当前位置读出一个字符。它的调用形式是:getc(fp)putc函数用来向文件中写一个字符,调用形式是:putc(ch,fp)putchar和getchar在头文件stdio.h中的实现#define getchar()getc(stdin)#define putchar(c)putc(c,stdout),读写字符函数putc和getc,9.3.2 读写文件,#include int main(int argc,char*argv)FILE*fp;int filecopy(FILE*fp);if(argc=1)fil
7、ecopy(stdin);else while(-argc0)if(fp=fopen(*+argv,“r”)=NULL)printf(“cant open%sn”,*argv);exit(1);else filecopy(fp);fclose(fp);,putc和getc函数的应用,int filecopy(FILE*fp)int c;while(c=getc(fp)!=EOF)putc(c,stdout);,例9.1:复制文件,9.3.2 读写文件,fgets函数用来从指定的文件中读出一行或一个指定长度的字符串,其调用形式是:fgets(line,n,fp);line 可以是字符数组名、字符
8、指针名,它是从文件中读出的字符串在程序中的存放处。n是一个int数,指出从文件中读出的字符串的长度。注意,实际读出的字符个数最多为 n-1个字符。fp是文件指针,它是读出数据所在的文件。fgets函数是一个返回值为字符型的指针的函数。在正常情况下该函数返回读出字符串的存放地址,当遇到EOF或读出错误时,该函数将返回NULL。,读写字符串函数fgets与fputs,9.3.2 读写文件,char*fgets(char*line,int n,FILE*fp)int ch;char*str;str=line;while(-n0,fgets函数的内部处理过程,9.3.2 读写文件,例9.2:利用fge
9、ts函数显示指定的文本文件(由命令行参数给定)的内容。#include int main(int argc,char*argv)FILE*fp;char str128;/*读入字符串存放处,每行最多为128个字符*/if(fp=fopen(argv1,“r”)=NULL)printf(“Can not open file.n”);exit(1);while(!feof(fp)if(fgets(str,126,fp)/*请思考,为什么用126*/printf(“%s”,str);fclose(fp);return 0;,fgets函数运用实例,9.3.2 读写文件,fputs函数用来向指定的文件
10、中写入一串字符。它的一般调用形式是:fputs(line,fp)其中参数fp为写入文件的文件指针。line是指定写入文件的字符串,它可以是指向字符串的指针、字符数组名、还可以是括在双引号中的字符串常量。fputs函数的返值是一个int型数,当写入成功时返值为0,不成功时返回非0值。,fputs函数,9.3.2 读写文件,例9.3:利用fgets函数和fputs函数实现的一个简单的回显程序。#include int main(void)char str20;while(fgets(str,20,stdin)!=NULL,fputs函数和fgets函数综合使用,9.3.2 读写文件,fscanf和
11、 fprintf的调用形式是fscanf(fp,format,input-list)fprintf(fp,format,output-list)fp为读写文件的指针。format是字符串形式的I/O格式说明,它可以是包含有I/O格式说明的字符数组名、字符指针名和字符串常数。input-list和output-list分别是输入项表和输出项表。fscanf函数返回实际赋值的变元数(不包含被压缩或跳过的字段),输入操作出错则返回EOF。fprintf函数的返回值是实际写出的字符数,若出错则返回负值。,格式化读写函数fscanf与fprintf,9.3.2 读写文件,例9.4:程序先从键盘上读入一个
12、字符串和一个整数,然后将它们以文本的形式写入到软盘的test的文件中,最后再从软盘的test文件中读出并显示到屏幕上。,fscanf函数、fprintf函数的应用,#include#include#include/*使用exit函数需要该头文件*/int main(void)FILE*fp;char string80;int v;if(fp=fopen(“a:test”,“w”)=NULL)puts(“Cannot open file a:test!”);exit(1);,9.3.2 读写文件,puts(“Enter a string and a number:”);scanf(“%s%d”,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 第九

链接地址:https://www.31ppt.com/p-5386382.html