收藏 分享(赏)

C语言培训之文件操作.ppt

上传人:gnk289057 文档编号:7972831 上传时间:2019-06-01 格式:PPT 页数:32 大小:331KB
下载 相关 举报
C语言培训之文件操作.ppt_第1页
第1页 / 共32页
C语言培训之文件操作.ppt_第2页
第2页 / 共32页
C语言培训之文件操作.ppt_第3页
第3页 / 共32页
C语言培训之文件操作.ppt_第4页
第4页 / 共32页
C语言培训之文件操作.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、文件操作,第十二章,2,回顾,上一节课主要讲解了以下内容 结构体 结构体数组 typedef关键字 冒泡排序法 插入排序法,3,目标,解释流和文件 讨论文本流和二进制流 解释各种文件函数 解释文件指针 讨论当前活动指针,4,文件输入/输出,C 语言的 I/O 操作使用标准库中的函数来实现 文件输入和输出的数据可以用内部的二进制表示法传输 文件输入和输出的数据也可以按文本格式传输,5,流,C 文件系统可以与各式各样的设备一起使用 缓冲文件系统可以将每个设备转换成逻辑设备,即所谓的流 由于所有的流工作方式类似 有两种类型的流 文本流 二进制流,6,文本流,文本流是一系列字符,可以由许多行构成,每行

2、由一个换行符终止 在文本流中,可以根据情况需要对某些字符进行转换 写(或读)的字符与外部设备上的字符可能不是一对一的关系 同样,由于可能发生转换,写(或读)的字符数可能与外部设备上的字符数不同,7,二进制流,二进制流是一系列字节,并与外部设备上的字节一一对应 写(或读)的字节数与外部设备上的字节数一样 文件流是一系列独立的字节,没有任何标记用来指明文件的结束或记录的结束 文件的结束是由文件大小来决定的,8,文件,文件可以指任何设备,如磁盘文件、终端以及打印机 通过执行打开操作,文件可以与流进行关联;通过执行关闭操作,可以断开关联 如果一个程序正常终止,所有文件都会自动关闭 一旦程序崩溃,文件会

3、保持打开状态,9,基本的文件函数,10,文件指针,文件指针是读写文件必需的 文件指针指向一个结构,该结构包含以下信息:文件名、文件的当前位置、文件是否正在读或写、是否出错或是否到达文件末尾 stdio.h 中定义了一个称为 FILE 的结构 文件指针所需的唯一声明为:FILE *fp,11,打开文本文件,fopen() 函数打开一个流,并将其与一个文件关联起来 fopen() 函数返回与该文件关联的文件指针 fopen() 函数的原型为:FILE *fopen(const char *filename, const char *mode);,12,通常使用一组如下所示的语句打开文件:FILE*

4、fp; If (fp=fopen(“xyz”, “w”)=NULL) printf(“Cannot open file”);exit(1); ,13,关闭文本文件,关闭文件可以释放系统资源,并且能降低超出允许打开的文件个数的风险 关闭流的同时也将清除所有相应的缓冲区 fclose() 函数关闭通过调用 fopen() 而打开的流 fclose() 函数的原型为:int fclose(FILE *fp); fcloseall() 函数用于关闭所有打开的流,14,fcl=fcloseall(); If(fcl=EOF)printf(“Error closing files”);elseprintf

5、(“%d file(s) closed”,fcl);,15,向文本文件中写入字符,流可以逐个字符或将一个字符串写入文件中 fputc() 用于将字符写入前面由 fopen() 打开的文件 fputc()函数的原型为:int fputc(int ch, FILE *fp);,16,从文本文件中读取字符,fgetc() 函数用于从使用 fgetc() 以读模式打开的文件中读取字符 fgetc() 函数的原型为:int fgetc(int ch, FILE *fp); fgetc() 函数从输入流中当前位置返回下一个字符,并增加文件位置指示器 do ch=fgetc(fp); while(ch!=E

6、OF);,17,字符串 l/O,函数 fputs() 用于向磁盘文件写入字符串,fgets() 用于从磁盘文件读取字符串 fputs() 函数将整个字符串写入指定的流中 fgets() 函数从指定的流中读取一个字符串,直到读到一个换行符或已经读了字符串长度减 1(length-1)个字符 其原型为:int fputs(const char *str, FILE *fp); char *fgets( char *str, int length, FILE *fp);,18,打开二进制文件,fopen() 函数打开一个流,并将其与一个文件关联起来 fopen() 函数返回与该文件关联的文件指针 f

7、open() 函数的原型为:FILE *fopen(const char *filename, const char *mode);,19,关闭二进制文件,fclose() 函数关闭通过调用 fopen() 而打开的流 fclose() 的原型为:int fclose(FILE *fp);,20,fread() 和 fwrite()函数,函数 fread() 和 fwrite() 称为无格式读或写函数 它们用于从文件读取和向文件写入整块的数据 最有价值的一个应用就是读写用户定义的数据类型,尤其是结构 这两个函数的原型为:size_t fread(void *buffer, size_t num

8、_bytes, size_t count, FILE *fp); size_t fwrite(const void *buffer, size_t num_bytes, size_t count, FILE *fp);,21,使用 feof(),如果到达文件末尾,函数 feof() 返回 true,否则将返回 false(0) 在读取二进制数据时使用该函数 其原型为:int feof (FILE *fp);,22,rewind() 函数,rewind() 函数将文件位置指示器置于文件开头 它将文件指针作为自己的参数 语法:rewind(fp );,23,ferror() 函数,ferror()

9、 函数用以判断文件操作是否出错 由于每个操作都设置了出错条件,所以应在每个操作后立即调用 ferror() ,否则可能会遗漏错误 其原型为:int ferror(FILE *fp);,24,删除文件,remove() 函数用于删除指定文件。 其原型为:int remove(char *filename);,25,清除流,fflush() 函数根据文件类型清除缓冲区 如果打开文件进行读操作,该函数将清空文件的输入缓冲区;而打开文件进行写操作时;该函数将文件的输出缓冲区写入文件中 其原型为:int fflush(FILE *fp); 如果 fflush() 函数的参数为空值,则清除所有被打开用于输

10、出的文件,26,标准流,每当 C 程序在 DOS 下开始执行时,操作系统将自动打开 5 个专门的流 标准输入流 (stdin) 标准输出流 (stdout) 标准错误流 (stderr) 标准打印流 (stdprn) 标准辅助流 (stdaux),27,当前活动指针,FILE 结构提供了一个指针,用以跟踪发生 I/O 操作的位置 每当从流中读取或写入一个字符,当前活动指针(即 curp)就会向前移动 当前活动指针的当前位置可以借助 ftell() 函数来获得 其原型为:long int ftell(FILE *fp);,28,设置当前位置 2-1,fseek() 函数通过指定相对于开始位置、当

11、前位置或流的末尾位置的字节数来重定位 curp,这取决于 fseek() 函数中指定的位置 其原型为:int fseek (FILE *fp, long int offset, int origin);,29,设置当前位置 2-2,origin 表示搜索的起始位置,有以下几个值:,30,fprintf() 和 fscanf() 2-1,缓冲 I/O 系统还包括 fprintf() 和 fscanf() 函数。除了是对文件进行操作外,这些函数与 printf() 和 scanf() 类似 其原型为:int fprintf(FILE * fp, const char *control_string,) ; int fscanf(FILE *fp, const char *control_string,.) ;,31,fprintf() 和 fscanf() 2-2,尽管 fprintf() 和 fscanf() 是最容易的方法,但它们的效率并不总是最高的 因为数据是以 ASCII 数据,而不是二进制格式写入的,因此调用这两个函数会产生额外开销 因此,就速度或文件大小而言,fread() 和 fwrite() 是较好的选择,32,总结,本课主要讲解了以下内容: 流和文件 文本流和二进制流 各种文件函数 文件指针 当前活动指针,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报