- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言 第8章 文件
第8章 文件;8.1 文件的有关概念;文件的种类:
1、文本文件:文件中的数据以编码方式存放。
2、二进制文件:文件中的数据用计算机内部的表示方法存放。;从使用角度看,文本文件可以用“记事本”等文本编辑工具打开并查看它的内容。二进制文件只能由相关程序打开并访问。
用“记事本”打开二进制文件看到的是乱码。;文件操作:
1、读文件:把文件中的数据读入计算机的内存,由程序进行处理。
2、写文件:把内存中的数据写出磁盘等外部存储介质。
说明:程序不能直接使用磁盘中的数据,必须把数据读入内存才能访问。而写文件的目的是把某些数据保存在磁盘中,使它们可长期保存。;8.2 流的创建与撤销;FILE类型指针:
FILE类型是C语言预定义的一个结构体,它位于头文件stdio.h中。
每个流都由一个FILE类型的指针变量来指示。所以建立流之间须先定义FILE类型的指针变量。
定义FILE类型的指针变量的方法是:;打开文件:
打开文件就是创建流的过程,使用库函数fopen()实现。
函数原型:FILE *fopen(文件名,文件操作方式)
功能:建立一个流,指定与流关联的文件,以及流的性质。返回值是FILE类型的指针,如果打开失败,返回NULL。
用法:;关闭文件:
关闭文件就是撤销流的过程,使用库函数fclose()实现。
函数原型:int fclose(FILE *fp)
功能:关闭指定指针指示的流。
用法:;fopen()函数的参数:
1、文件名:
如果未指定路径,则打开的文件和本程序位于同一个文件夹中。
如果指定了路径,则打开的文件位于指定文件夹中。
如:;2、文件操作方式:
文件操作方式决定了流的性质,包括文件性质和允许的操作。
文件操作方式以字符串的方式给出。取值有:
(1) r 或 rt
以只读方式打开一个已存在的文本文件。如果文件不存在,返回空指针NULL。;(2) w 或 wt:
新建一个文本文件,如果该文件已经存在,则清空它。
将来该文件只能写。;(3) a 或 at:
以追加方式打开一个文本文件,如果文件不存在,则新建一个文件,如果文件已存在,则新写的数据将追加在原文件的后面。;(4) r+t 或 rt+:以读/写方式打开一个文本文件,如果文件不存在,返回空指针。
(5) w+t 或 wt+:以读/写方式打开一个文本文件,如果文件已存在,清空文件。
(6) a+t 或 at+:以追加方式打开一个可读/写的文本文件,如果文件不存在,则新建一个文件,如果文件已存在,则新写的数据将追加在原文件的后面。
注:把(1)~(6)中的t改为b,则打开二进制文件。;8.3 文件操作;读文件:
函数原型:int fread(void *p,int size,int n,FILE *fp)
功能:从流fp中读大小为size字节的n个数据项到p所指的内存中。返回值为实际读入的数据项个数。
如:;写文件:
函数原型:int fwrite(void *p,int size,int n,FILE *fp)
功能:向流fp写入大小为size字节的n个数据项,p为数据的起始地址。返回值为实际写入的数据项个数。
如:;程序举例1:
程序1:建立一个文件,把整数100写入该文件。
程序2:从程序1建立的文件中读取数据,并显示输出读取的数据。;程序1:;程序2:;程序举例2:
程序1:建立一个文件,把一个整型数组中的数据都写入该文件。
程序2:从程序1建立的文件中读取数据,并显示输出读取的数据。;程序1:;程序2:;文件的位置指针:
每个流中都有一个指示当前读写位置的指针。文件的读写都是从这个指针处进行。
以r或w的方式打开文件时,文件的位置指针位于文件开始处。;程序2:把程序2改写为每次只读一个数。;文件位置指针的定位:
1、fseek()函数:
原型:int fseek(FILE *fp, long offst, int orgn)
功能:把文件位置指针移动到指定位置。
orgn是起点,取值有:SEEK_SET(文件头)、SEEK_CUR(当前位置)、SEEK_END(文件尾)。
offst是移动的距离,正数是向尾部方向移动,负数是向头部方向移动。
如:fseek(fp, 10, SEEK_SET);;程序2:读取l2文件中第3个数。;2、ftell()函数:
原型:long ftell(FILE *fp)
功能:返回文件位置指针的当前位置。
结果是距文件头的字节数。
3、rewind()函数:
原型:void rewind(FILE *fp)
功能:把文件位置指针移动到文件头。;程序举例3:
读取一个已存在的文本文件,显示输出文件的内容。;#include stdio.h
#include stdlib.h
int main(void)
{
FILE
文档评论(0)