《C语言程序设计》第9章 文件操作

上传人:zw****58 文档编号:51433832 上传时间:2018-08-14 格式:PPT 页数:20 大小:212KB
返回 下载 相关 举报
《C语言程序设计》第9章 文件操作_第1页
第1页 / 共20页
《C语言程序设计》第9章 文件操作_第2页
第2页 / 共20页
《C语言程序设计》第9章 文件操作_第3页
第3页 / 共20页
《C语言程序设计》第9章 文件操作_第4页
第4页 / 共20页
《C语言程序设计》第9章 文件操作_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《《C语言程序设计》第9章 文件操作》由会员分享,可在线阅读,更多相关《《C语言程序设计》第9章 文件操作(20页珍藏版)》请在金锄头文库上搜索。

1、第9章 文件操作本章要求: 掌握C语言中文件的概念; 理解以不同方式打开文件的含义; 掌握文件的各种操作函数,能正确对文件 进行读写数据操作。 本章难点:掌握文件的各种操作函数,能正确对文 件进行读写数据操作。本章重点:掌握文件的各种操作函数,能正确对文 件进行读写数据操作。9.1 文件系统的概念 9.1.1 C文件概述 l所谓“文件”一般指存储在外部介质上数据 的集合。 lC语言把文件看作一个字节序列,即由一连 串的字节组成,称为“流(stream)”,以字 节为单位访问,没有记录的界限。输入输出 字符流的开始和结束只由程序控制而不受物 理符号(如回车符)的控制。因此也把这种 文件称作“流式

2、文件”。按文件中数据的组织形式来分: 文本文件 每一个字节存放一个ASCII码,代表一个字符 。由文本行组成,并以换行符n结尾,有文 件结束标志。 二进制文件 把数据按其在内存中的存储形式原样存放在 磁盘上,一个字节并不对应一个字符。 例: 00000100 1101001000110001 00110010 00110011 0011010000000100 11010010整数1234内存存储形式二进制形式ASCII形式特点:存储量大、速度慢、 便于对字符操作特点:存储量小、速度快 、便于存放中间结果9.1.2缓冲文件系统 C语言使用的文件系统分为缓冲文件系 统(标准I/O)和非缓冲文件系

3、统(系统I/O) 。ANSI C 标准不再采用非缓冲文件系统。本章主要介绍缓冲文件系统中文件的操作。 9.2 文件的打开与关闭 文件操作的过程:对磁盘文件的操作必 须“先打开,后读写,最后关闭”。9.2.1 文件类型指针 在操作文件时,C语言利用一个结构体 类型的变量存放文件的信息。该变量的结构 体类型由系统取名为FILE。用一个指针变量指向指向存放该文件信 息的结构体类型变量,这个指针称为文件指 针。定义形式: FILE *指针变量标识符;对文件操作需要#include 9.2.2 文件的打开一般形式为:文件指针名=fopen(文件名,使用文件方式); 其中: “文件指针名” 是指向FILE

4、类型的指针 变量。 “文件名”是被打开文件的文件名,可 以是字符串常量或字符数组。 “使用文件方式”是指文件的类型和操 作要求。例如:FILE *fp;fp=fopen(“c:tcsource.dat “,“r“);注意反斜杠的表示方法见下表打开方式 含义义及说说明 “r“ 以只读读方式打开一个文本文件, 只允许读许读 数据。 只能打开存在的文件。 “w“以只写方式打开或建立一个文本 文件,只允许许写数据。 若文件不存在,则则新建;若文件 存在,则删则删 除原文件,重新建。 “a“以追加方式打开一个文本文件, 并在文件末尾写数据。 若文件不存在,则则新建;若文件 存在,则则在源文件末尾添加内容

5、 。说明: 打开方式带上“b”表示是对二进制文件进行操作 。带上“+”表示既可以读,又可以写,而对待文 件存在与否的不同处理则按照“r”、“w”、“a”各 自的规定。 若打开失败,fopen都返回一个空指针NULL。 文件打开可能出现的错误有: 试图以“读”方式(带“r”的方式)打开一 个并不存在的文件。 新建文件,而磁盘上没有足够的剩余空间 或磁盘被写保护。 试图以“写”方式,打开 “只读” 文件。带“w”或“a”或“r+”或“rb+”方式FILE *fp;fp=fopen(“c:tcsource.dat “,“r“); /* 此处开始对文件读*/ 若打开失败,fp指针变量里面是空指针NUL

6、L, 对空指针的读写操作会出错。 为避免因上述原因的出错,常用以下的方法来 打开一个文件: if(fp=fopen(“c:myfile.dat“,“w+“)=NULL)printf(“This file could not be opened !n“); else /* 此处编写对文件读写的代码 */ 9.2.3 文件的关闭(fclose函数)文件使用完后,为确保文件中的数据不丢 失,都要使用文件的关闭函数fclose进行关闭 ,其调用形式:fclose(文件指针变量); 功能:关闭一个由fopen()函数打开的文件。 例如:fclose(fp);前面例子中,把fopen函数返回的指针赋 值给

7、fp,现在用fclose函数使文件指针fp与文 件脱离,同时刷新文件输入输出缓冲区。9.3 文件的读写 打开文件后都会返回该文件一个文件类 型指针(fp),程序中就是通过这个指针执行对 文件的读和写。 在语言中提供了多种文件读写的函数: l 字符读写函数:fgetc和fputc l 字符串读写函数:fgets和fputs l 数据块读写函数:fread和fwrite l 格式化读写函数:fscanf和fprinf 上面的文件读写函数均是指顺序读写,即读 写了一条信息后,文件读写位置指针自动指 向下一个读写单元。内容 内容 内容 内容 内容 内容“r”方式文件读 写指针内容 内容 内容 内容 内

8、容 内容“w”方式文件读 写指针内容 内容 内容 内容 内容 内容“a”方式文件读 写指针文件读 写指针文件读 写指针文件读 写指针内容文件读 写指针注意 区别 文件 指针读文件时注意不要超过文件末尾: 对于文本文件,由于它的结束标记是EOF (即-1)因此可通过读取的字符是不是结束 标志来判断。 对于二进制文件,由于没有EOF的结束标 志,使用系统提供的feof()函数来判断 feof()的使用格式是:feof(fp); 其中,fp是文件指针变量,如果文件读取结 束则返回非0值,没结束返回0。 while( !feof(fp) /* 此处写入读操作语句 */ 文本文件也可使用feof()函数

9、按上面来的形式 来判断是否读取结束。9.3.2字符读写函数 1字符读函数fgetc() 功能是从指定的文件中读一个字符,函数调 用的一般形式为:字符变量=fgetc(文件指针);例如:ch=fgetc(fp);FILE *fp; char ch;fp=fopen(“9-1.txt“,“r“);while(!feof(fp) ch=fgetc(fp);putchar(ch);例:显示指定文 件中的内容2字符写函数fputc()将一个字符写入到文件中,调用的一般格 式如下:fputc(ch,fp);fputc函数也有返回值,若写操作成功,则 返回一个向文件所写字符的值;否则返回 EOF,表示写操作

10、失败。fp=fopen(“9-1.txt“, “w“); fputc(A,fp);fp=fopen(“9-1.txt“, “a“); fputc(A,fp);在e盘新建文件 abc.txt,在其 中写入26个大 写字母,每行 10个字母例:while(ch=fgetc(fp1)!=EOF)9.3.3 字符串读写函数 1字符串读函数fgets():fgets(字符数组名,n,文件指针);其功能是:从指定的文件中读一个字符串到 字符数组中。从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串 结束标志0。注意:fgets函数从文件中读取字符直到遇 见回车符或EOF为止,或直到读入

11、了所限定 的字符数(至多n-1个字符)为止, 例如:fgets(str,n,fp); 函数读成功返回str指针;失败返回一个空指 针NULL。 2字符串写函数fputs():fputs(字符串,文件指针);将指定的字符串写到文件中,如: fputs(“China“,fp);函数返回0时,表明操作成功;返回非0时, 表明写操作失败。 while(ch=fgetc(fp1)!=EOF)fputc(ch,fp2);char ch;while(!feof(fp1) fgets(ch,80,fp1);fputs(ch,fp2); char ch80;9.3.4 格式读写函数 1.格式化读函数fscanf

12、() fscanf(文件指针, “格式字符串”,输入列表); 2.格式化写函数fprintf() fprintf(文件指针, “格式化字符串”,输出列表); 对比scanf()函数和printf()函数 从键盘输入: scanf(“%d”, 从文件输入: fscanf(fp,“%d”,在屏幕上打印: printf(“%d”, a); 在文件中写入: fprintf(fp,“%d”, a);s1.txt文件中存放着一些学生分数,统计及 格人数,并把结果写入s2.txt文件9.3.5 数据块读写函数 1. 写数据块函数fwrite()fwrite(buffer,size,count,fp); 如:int xa10=1,2,3,4,5,6,7,8,9,10;将数组整体写入文件中的语句:fwrite(xa,20,1,fp); 2.读取数据块函数fread() fread(buffer,size,count,fp); 如:float a5; fread(a,4,5,fp); 从文件中每次读4个字节(一个实数)送入实数 组a中,连续读5次。

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

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

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