《C语言程序设计教程》课件--第10章.ppt
《《C语言程序设计教程》课件--第10章.ppt》由会员分享,可在线阅读,更多相关《《C语言程序设计教程》课件--第10章.ppt(43页珍藏版)》请在三一文库上搜索。
1、1,C 语言程序设计,北京科技大学 计算机系,第10章 文 件,2019/2/8,2,第10章 文件,10.1 文件的概念 10.2 文本文件的读写 10.3 二进制文件的读写,2019/2/8,3,文件:存储在外部存储介质上相关数据的集合。 例如:程序文件中保存着程序,数据文件中保存着数据。 *.C C语言的源程序 文本文件 *.OBJ 目标文件 二进制文件 *.EXE 可执行文件 二进制文件 文件的存储特性 文件是一个有序的数据序列。C语言把文件作为一个字符(字节)序列处理,对文件的存取是以字符(字节)为单位进行的。,10.1 文件的概述,10.1.1 文件和文件指针,1. 什么是文件,2
2、019/2/8,4,设备文件 在C语言中,“文件”的概念被进一步扩大,把每台与主机相连的输入输出设备都看作是一个文件。即把实际的物理设备抽象为逻辑文件,它们被称为设备文件。 对外部设备的输入输出就是对设备文件的读写。,10.1 文件的概述,10.1.1 文件和文件指针,1. 什么是文件,2019/2/8,5,按文件存储数据的形式 ASCII文件(或称文本文件) ASCII码文件中每个字节存放一个ASCII代码,代表一个字符,此种存储形式便于输出显示,在DOS操作系统下可以直接阅读。 二进制文件 二进制文件中的数据是按照在内存中的二进制存储格式存放的,此种存储形式节省存储单元。二进制文件在DOS
3、操作系统下不能直接阅读。,10.1 文件的概述,10.1.1 文件和文件指针,2. 文件的种类,2019/2/8,6,例如将整数1949分别存储在这两种数据文件中。,ASCII文件:ASCII码,二进制文件:补码,占用4个字节,占用2个字节,10.1 文件的概述,10.1.1 文件和文件指针,2. 文件的种类,2019/2/8,7,按照对文件的处理方式 缓冲文件 利用缓冲文件系统处理的文件称为缓冲文件。系统处理方法是在内存中为每个正在使用的缓冲文件开辟一个缓冲区,其大小是512个字节。对文件读写数据都通过缓冲区进行。 非缓冲文件 利用非缓冲文件系统处理的文件称为非缓冲文件。系统处理非缓冲文件时
4、,不为文件开辟缓冲区,需要程序员自行设计并管理缓冲区。,83年以后ANSI C标准中取消了非缓冲文件 系统,对文本文件和二进制文件均采用缓冲文 件系统进行处理。,10.1 文件的概述,10.1.1 文件和文件指针,2. 文件的种类,2019/2/8,8,系统对文件的处理过程就是对文件进行输入/输出操作的过程。 从文件读数据时,先一次性从磁盘文件中读取一批数据到缓冲区,然后再从缓冲区逐个将数据送入变量。 向文件写数据时,也是先将变量中数据送到缓冲区,待缓冲区装满后,再一起存到磁盘文件中。,10.1 文件的概述,10.1.1 文件和文件指针,3. 缓冲文件和文件指针,2019/2/8,9,10.1
5、 文件的概述,10.1.1 文件和文件指针,3. 缓冲文件和文件指针,文件类型指针 在缓冲文件系统中,对每个正在使用的文件都自动分配一个FILE类型的结构体变量,用于存放文件的有关信息,如文件号、文件状态、缓冲区地址和大小等。,FILE类型是系统定义的,包含在stdio.h头文件中,在C语言中,无论对磁盘文件还是设备文件的读/写都要通过FILE类型的结构体变量进行。因此对于每个使用中的磁盘文件必须先定义一个FILE类型的文件指针变量并指向此变量。 FILE *文件指针变量名;,typedef struct short level; /* fill/empty level of buffer *
6、/ 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 file indicator
7、*/ short token; /* Used for validity checking */ FILE; /* This is the FILE object */,2019/2/8,10,标准文件是外部设备中的三个特殊的设备文件。它们的文件指针是系统定义的,并由系统自动打开和关闭。这三个标准文件分别是: 标准输入文件,文件指针为stdin,系统指定为键盘。 标准输出文件,文件指针为stdout,系统指定为显示器。 标准错误输出文件,文件指针为stderr,系统指定为显示器,输出错误信息。,10.1 文件的概述,10.1.1 文件和文件指针,4. 标准文件,2019/2/8,11,10.1
8、 文件的概述,10.1.2 文件的打开与关闭,操作文件的一般步骤 打开文件 读写文件 关闭文件,打开文件:建立用户程序与文件的联系,为文件分 配一个文件缓冲区。,读写文件:是指对文件的读、写、追加和定位操作。,关闭文件:切断文件与程序的联系,释放文件缓冲 区。,C语言的输入输出函数库中提供了大 量的函数,用于完成对数据文件的建立、 数据的读写、数据的追加等操作。 在程序中调用这些函数时,必须先用include命令包含stdio.h文件。,2019/2/8,12,常用的调用形式: FILE *fp; fp = fopen(文件名, 文件使用方式); 文件名:需要打开的文件名称(字符串)。 文件使
9、用方式:是具有特定含义的符号。,10.1 文件的概述,10.1.2 文件的打开与关闭,1. 文件打开函数fopen( ),函数功能: 按指定的文件使用方式打开指定的文件。 若文件打开成功,为该文件分配一个文件缓冲区和一个 FILE类型变量,返回一个FILE类型指针; 若文件打开失败,返回NULL。,2019/2/8,13,文本文件的三种基本使用方式 ”r”:只读方式 为读(输入)文本文件打开文件。若文件不存在,返回NULL。 ”w”:只写方式 为写(输出)文本文件打开文件。若文件不存在,则建立一个新文件;若文件已存在,则清空文件。 ”a”:追加方式 为写(输出)文本文件打开文件。若文件已存在,
10、则保持原来文件的内容,将新的数据增加到原来数据的后面;若文件不存在,则返回NULL。,10.1 文件的概述,10.1.2 文件的打开与关闭,2019/2/8,14,二进制文件的三种基本使用方式 ”rb”:只读方式 为读(输入)二进制文件打开文件。若文件不存在,返回NULL。 ”wb”:只写方式 为写(输出)二进制文件打开文件。若文件不存在,则建立一个新文件;若文件已存在,则清空文件。 ”ab”:追加方式 为写(输出)二进制文件打开文件。若文件已存在,则保持原来文件的内容,将新的数据增加到原来数据的后面;若文件不存在,则返回NULL。,10.1 文件的概述,10.1.2 文件的打开与关闭,201
11、9/2/8,15,10.1 文件的概述,10.1.2 文件的打开与关闭,文件的其他打开方式 ”r+”:可以对文本文件进行读/写操作。 若文件不存在返回NULL; 若文件存在内容不被清空。 ”w+”:可以对文本文件进行读/写操作。 若文件已经存在,则先清空文件原来的内容。 ”a+”:可以对文本文件进行读/追加操作。 文件内容不会清空。 ”rb+”:可以对二进制文件进行读/写操作。 ”wb+”:可以对二进制文件进行读/写操作。 ”ab+”:可以对二进制文件进行读/追加操作。,2019/2/8,16,检查文件打开操作是否成功 if(fp = fopen(“filename“, “r“) = NULL
12、) printf (”Cannot open file.n”); exit(0); 检查以只读方式打开文件名为filename的文件是否成功。 exit函数的作用:结束程序的执行,并将实参0作为函数返回值传给操作系统。,10.1 文件的概述,10.1.2 文件的打开与关闭,2019/2/8,17,常用的调用形式: FILE *fp; fclose( fp ); fp:已经打开的文件指针。,10.1 文件的概述,10.1.2 文件的打开与关闭,2. 文件关闭函数fclose( ),函数功能: 关闭fp指定的文件,释放该文件的缓冲区、 FILE类型变量及文件指针。 若文件关闭成功,则返回0; 若文
13、件关闭失败,则返回非0值。,2019/2/8,18,常用的调用形式: FILE *fp; fputc( ch,fp ); ch:需要输出的字符,可以是字符常量或字符变量; fp:文件指针变量。,对文本文件的读写操作,必须按文件中字符的先后顺序进行,只能在操作了第i个字符之后,才能操作第i+1个字符。 在对文件操作时,文件的读写指针由系统自动向后移动。,10.2 文本文件的读写,10.2.1 文件的字符输入输出函数,1. 字符输出函数fputc( )(或putc( )),函数功能: 将一个字符(ASCII码)写入到fp所指向的文件(该文件 必须是以写或读写方式打开的)中。 若输出操作成功,函数返
14、回写入的字符;否则,返回EOF。,系统定义的文本文件结束标志,其值为 (-1)。, putc函数与fputc函数的功能相同。在stdio.h文件中被定义为 #define putc(c,f) fputc(c),f) 标准文件中用的putchar函数是fputc函数的特殊用法,它在stdio.h文件中被定义为 #define putchar(c) putc(c),stdout),2019/2/8,19,常用的调用形式: FILE *fp; ch = fgetc(fp); ch:可以是字符变量或整型变量; fp:文件指针变量。,10.2 文本文件的读写,10.2.1 文件的字符输入输出函数,2.
15、字符输入函数fgetc( )(或getc( )),函数功能: 从fp所指向的文件(该文件必须是以读或读写方式打开 的)中读取一个字符。 若输入操作成功,函数返回读入的字符; 若文件结束或输入操作失败,则返回EOF。, getc函数与fgetc函数的功能相同。在stdio.h文件中被定义为 #define getc(f) fgetc(f) 标准文件中用的getchar函数是fgetc函数的特殊用法,它在stdio.h文件中被定义为 #define getchar( ) getc(stdin),2019/2/8,20,【例10.1】利用fputc和fgetc函数建立一个文本文件,并显示文件中的内容
16、。 #include main( ) FILE *fp; /* 定义一个文件指针变量fp */ int c; /* c为存放字符的变量 */ char filename40; /* filename用于存放数据文件名 */ printf(“filename: “); /* 提示输入磁盘文件名 */ gets(filename); if (fp=fopen(filename,“w“)=NULL) printf(“Cant open the %sn“, filename); exit(0); ,10.2 文本文件的读写,10.2.1 文件的字符输入输出函数,测试打开文件是否成功,2019/2/8,
17、21,while (c=getchar( )!=EOF) /*键盘文件结束标志:输入Ctrl+z,显示Z后回车*/ putc(c, fp); /* 将键盘输入的字符写到文件中 */ fclose(fp); /* 建立文件结束,关闭文件 */ printf(“outfile:n“); fp=fopen(filename,“r“); /* 以读方式打开文本文件 */ while (c=getc(fp)!=EOF) /* 未读到文件结束标志时 */ putchar(c); /* 在显示器显示读出的字符 */ fclose(fp); /* 读文件结束,关闭文件 */ ,10.2 文本文件的读写,10.
18、2.1 文件的字符输入输出函数,2019/2/8,22,常用的调用形式: FILE *fp; feof(fp); fp:文件指针变量。,10.2 文本文件的读写,10.2.2 文件结束测试函数,函数功能: 测试fp所指向的文件是否已读到文件尾部。 若该文件没有结束,则返回0; 若文件结束,则返回非0值。,对文本文件进行读操作时,例如fgetc( )返回EOF,即可作文件结束处理。但在二进制文件中-1是合法数据,所以系统提供了一个适用对象更普遍的文件结束测试函数feof。,2019/2/8,23,例如:复制一个磁盘文件。 #include main( ) FILE *infp,*outfp; c
19、har infile40,outfile40; int ch; printf(“input filename:“); scanf(“%s“,infile); printf(“output filename:“); scanf(“%s“,outfile); if(infp=fopen(infile,“r“)=NULL) /* 打开源文件 */ printf(“infile open error.n“); exit(0); if(outfp=fopen(outfile,“w“)=NULL)/* 打开目标文件 */ printf(“outfile open error.n“); exit(0); c
20、h=fgetc(infp); /* 从源文件中读一个字符 */ while(!feof(infp) /* 源文件未读完 */ fputc(ch, outfp); ch=fgetc(infp); /* 复制文件 */ fclose(infp); fclose(outfp); ,10.2 文本文件的读写,10.2.2 文件结束测试函数,2019/2/8,24,常用的调用形式: FILE *fp; fputs( str, fp ); str:需要输出的字符串,可以是字符串常量或字 符串指针; fp:文件指针变量。,fputs与puts函数的功能类似,它们的区别: puts函数能将字符串的结束标志 0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计教程 语言程序设计 教程 课件 10
链接地址:https://www.31doc.com/p-2045101.html