C语言程序设计A课程辅导(8)

上传人:liy****000 文档编号:118839202 上传时间:2019-12-26 格式:DOC 页数:11 大小:92KB
返回 下载 相关 举报
C语言程序设计A课程辅导(8)_第1页
第1页 / 共11页
C语言程序设计A课程辅导(8)_第2页
第2页 / 共11页
C语言程序设计A课程辅导(8)_第3页
第3页 / 共11页
C语言程序设计A课程辅导(8)_第4页
第4页 / 共11页
C语言程序设计A课程辅导(8)_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《C语言程序设计A课程辅导(8)》由会员分享,可在线阅读,更多相关《C语言程序设计A课程辅导(8)(11页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计A课程辅导(8)-第8章 :文件主要内容: 一、文件的概念 二、文件的打开和关闭 三、文本文件的访问操作 四、二进制文件的访问操作 五、课程总复习一、文件的概念l 文件是计算机外部设备中一个被命名的信息单位 标准输入输出(I/O)设备文件:如stdin和stdout分别表示标准输入设备键盘和标准输出设备显示器。这两个文件流标识符在stdio.h系统头文件中有定义,类型为FILE*,其中文件类型(FILE)也在stdio.h中定义。我们可以随时从stdin中读出(即从键盘输入到内存)信息,也可以随时向stdout中写入(从内存输出到文件)信息。 外存储设备中保存的文件:由用户命名,

2、并规定访问文件的方式。如只允许向其写入信息的输出方式的文件,只允许从已有文件中读出信息的输入方式的文件,又允许写入又允许读出的输入和输出方式的文件等。l 文件的3种基本的访问方式 输入方式: 从文件读出数据到内存变量(数组)中保存。 输出方式: 把内存变量(数组)的内容送入到文件中保存。 既输入又输出方式: 对于同一个文件,可以既进行输入又进行输出。l 文件名给需要使用的数据文件所起的名字,它包括文件主名和扩展名两部分。符合命名规定的任何标识符都可以作为主名,如可用gongzi作为工资文件的主名。扩展名由1-3个字符所构成,如可用txt作为一个扩展名。在一个文件名中可以省略扩展名。若带有扩展名

3、,则用句点与主名分开。如works.ran、工资.bin等。l 文件类型和文件流在C语言系统中,系统预定义了一种文件类型,文件类型标识符为FILE,当需要使用一个数据文件时,必须根据该文件名和访问方式返回一个具有FILE类型的指针值,接着把这个值保存到具有FILE*类型的指针变量中,以后就用这个指针变量(文件流)代替所对应的文件,完成对文件的操作。我们前面提到的stdin和stdout分别是系统定义的标准输入和输出文件流。l 文件结束符(EOF)在每个数据文件的结尾都利用一个字节保存一个文件结束标记(-1),在stdio.h中,把-1定义为符号常量EOF。l 文件长度文件中保存数据所占有的存储

4、字节数。当一个文件用来保存记录结构的数据时,有时也把保存的记录个数称为文件长度,此时的文件字节长度等于记录个数乘以记录结构类型的长度。l 数据文件分类C语句文件按存储信息方式的不同可分为字符文件和字节文件两种。字符文件又称文本文件或ASCII码文件。字节文件又称二进制文件或内部格式文件。字符文件:文件中保存的字符串信息和数值信息都采用字符的ASCII码的形式。当然对于汉字信息采用2字节的汉字区位码。如保存常数23时,对应保存的ASCII码为50和51。字节文件:文件中保存的字符串信息仍采用字符的ASCII码的形式,而保存的数值信息则采用其内部格式。如保存常数23时,因为它是一个int类型的常数

5、,须占用4个字节,对应保存的二进制数为00010111,前面还有3个字节的24个0。l 文件操作函数包括打开文件、关闭文件、读取数据、写入数据、移动文件指针位置等,它们的函数原型都保存在系统头文件stdio.h中,调用这些函数时必须通过#include命令包含此头文件。二、文件的打开和关闭 1. 打开数据文件 要访问一个文件,首先要按照一定的方式打开一个文件,并使之与一个文件流相联系,然后才能进行存取数据的操作。当对一个文件的处理操作结束后,就把它关闭掉。 打开一个文件,需要调用C函数库中的fopen()函数,得到相对应的文件流。该函数的原型为: FILE* fopen(const char*

6、 fname, const char* mode);fname参数:用于指向要打开文件的文件名字符串,该字符串内可以带有盘符和路径名,若省略盘符和路径名则隐含为当前盘和当前路径,即保存当前程序文件的磁盘和路径,mode参数:用于指定打开文件的方式,它也是以字符串的形式给出的,mode是指向该字符串的指针。如果调用该函数成功,则返回一个文件指针,即文件名为fname、打开方式的mode所对应的文件流,以后就利用它操作文件。如果调用该函数失败,则返回空指针(NULL),表明没有打开指定的文件,不能进行访问操作。 2. 打开数据文件的方式打开数据文件的方式有以下用字符串表示的12中不同方式:r /打

7、开一个用于输入的文本文件,若文件不存在则打开失败w /打开一个用于输出的文本文件,存在清空,不存在则建立a /打开一个用于向尾部追加输出的文本文件,不存在则建立rb /打开一个用于输入的二进制文件,若文件不存在则打开失败wb /打开一个用于输出的二进制文件,存在清空,不存在则建立ab /打开一个用于向尾部追加输出的二进制文件,不存在则建立r+ /打开一个用于读/写操作的文本文件,不存在则打开失败w+ /打开一个用于读/写操作的文本文件,不存在则建立a+ /打开一个用于读/追加写操作的文本文件,不存在则建立rb+ /打开一个用于读/写操作的二进制文件,不存在则打开失败wb+ /打开一个用于读/写

8、操作的二进制文件,不存在则建立ab+ /打开一个用于读/追加写操作的二进制文件,不存在则建立 总之:r(read)为读、w(write)为写、b(binary)为二进制、+为读/写 3. 打开数据文件举例 (1) FILE* fp1; /定义一个文件指针变量fp1 fp1=fopen(xxk1.dat, w); /以只写方式打开当前路径和目录中 /的本文文件xxk1.dat,返回的文件流赋给文件指针变量fp1 (2) FILE* fp2=fopen(d:C语言练wr.dat, r); /以只读方式 /打开指定目录内的文本文件wr.dat,返回的文件流赋给fp2 (3) FILE* fp3=fo

9、pen(xxk2.ran, wb+); /为同时能够进行读/写 /和二进制操作方式而打开当前目录中的xxk2.ran文件, /返回的文件流赋给文件指针变量fp3 4. 数据文件的关闭 关闭一个文件,需要调用C函数库中的fclose()函数,该函数的原型为: int fclose(FILE* fp); 如果fp所对应的文件关闭成功则返回0,否则返回-1(EOF)表示失败。 若要关闭已经打开的fp1文件流所对应的xxk1.dat文件,则调用: fclose(fp1); 打开一个文件并处理结束后,最好使用fclose()函数调用关闭它,这样才能够保证临时存储在文件缓冲区的内容全部写入到外存的文件中。

10、三、文本文件的访问操作 1. 向文本文件输出数据 调用在stdio.h头文件中声明的fputc()函数或fputs()函数。这两个函数的原型为: int fputc(int ch, FILE* stream); /向文件写入一个字符 int fputs(const char* str, FILE* stream); /向文件写入一个字符串 fputc函数在操作成功时返回原字符,否则返回-1。 fputs函数在操作成功时返回0,否则返回-1。应用举例例1 向d盘xxk目录下的wr1.dat文件依次输出26个小写英文字母。分析:若d盘上没有xxk目录,则要首先建立此目录,然后才能够编写C程序使用此

11、目录建立文件。在程序的主函数中,首先要根据文件名和访问方式打开此文件,得到对应的文件流,接着依次向其写入26个小写英文字母,最后关闭该文件。此题的参考程序如下: #include #include void main(void) int i; FILE* f1; /定义文件指针以便保存文件流 f1=fopen(d:xxkwr1.dat,w); /以写文本方式打开返回文件流 if (f1=NULL) /当f1对应的文件不存在则退出运行 printf(不能够打开文件!n); exit(1); for(i=0;i26;i+) fputc(a+i, f1); /向f1文件流输出每个字母 fclose(

12、f1); /关闭f1所对应的文件 通过使用操作系统提供的记事本窗口可以查看该文件的内容。例2 把从键盘上输入的若干行文本字符原原本本地存入到d盘xxk目录下的wr2.dat文件中,直到从键盘上输入一空行(即只按下回车键)为止。分析:此程序的主函数同样包括定义文件流、打开文件、接收键盘输入和写文件、关闭文件等操作。 #include #include #include void main(void) char str80; /定义一个字符数组,保存输入的一行字符 FILE * f2; /定义文件指针对象,用来保存一个文件流 f2=fopen(d:xxkwr2.dat,w); /以写方式访问文件

13、if (!f2) /当f2打开失败时退出运行 printf(Cannot open File.n); exit(1); printf(在下面输入若干行文本建立文本文件:n); while(1) /执行while循环 gets(str); /用str保存从键盘上输入的一行字符 strcat(str,n); /在字符串的末尾添加一个换行符 if(*str=n) break; /若输入的是空串则离开循环 fputs(str,f2); /把str所指向的字符串写入到f2文件 fclose(f2); /关闭f2所对应的文件 2. 从文本文件输入数据调用在stdio.h头文件中声明的fgetc()函数或fgets()函数。这两个函数的原型为: int fgetc(FILE* stream); char* fgets(char* str, int length, FILE* stream); fgetc函数从文件流

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

当前位置:首页 > 资格认证/考试 > 其它考试类文档

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