- 1、本文档共470页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言将文件看成是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。故C文件是一个字节流或二进制流。对这种文件,简称为流。 在一般的高级语言中,按文件的存放方式将文件分成ASCII码文件和二进制文件。 ASCII码文件又称文本文件。它的每一位字节存放一个ASCII码,而在二进制文件中,是把内存中的数据按其在内存中的存储形式直接存储到外部存储介质上。 如 int型数10000 0010011100010000 内存存储形式 0010011100010000 二进制形式 0011000100110000001100000011000000110000 ASCII形式 文本文件特点: 存储量大、速度慢、便于对字符操作 二进制文件特点: 存储量小、速度快、便于存放中间结果 二、标准级(流式)输入输出 以C语言中,处理文件有两种方式:一种称为缓冲文件系统,一种称为非缓冲文件系统。对于缓冲文件系统,系统能自动在内存中为文件打开一输入输出缓冲区。非缓冲文件系统则由程序员为每个文件设定缓冲区。 用于操作缓冲文件的函数称为标准函数,用于操作非缓冲文件的函数称为系统级函数。 三、文件缓冲区 由于读写外部存储介质的速度相对于内存慢很多,为了提高读写效率,系统在打开一文件的同时,在内存中分配了一块区域与该文件相联系,这块区域就叫文件缓冲区。当系统向外存写数据时,并不立即将数据写入外存,而是将数据写入文件缓冲区,当文件缓冲区写满后,再一次向外存写数据。 当从文件中读数据时,将所读数据附近的数据读入,下次再读时,先到文件缓冲区中找,如果没找到,再到外存中读。 §10.2 文件类型指针及文件的打开与关闭 在C语言中,每个被使用的文件都在内存中开辟一个区域用来保存文件的有关信息。这个信息保存在一个结构变量中。该结构名为 FILE(不能小写)。 在一个程序中,可能有许多不同的文件,系统用FILE结构来管理这些文件,而从程序员的角度来看待文件,就是指向FILE结构的指针,此指针即为文件指针。 定义文件指针: FILE *fp; 一、文件的打开 所谓打开文件,就是在内存中定义一个FILE数据结构,然后将指定的磁盘文件与该结构相联系,然后系统通过FILE结构操作文件,程序员通过指向FILE结构的指针来使用文件。 语法: FILE *fp; fopen(文件名,文件的使用方式); 说明: 文件名可包含路径,但需用双反斜线(\\),也就是转义序列。 二、文件的使用格式 r 文件以只读方式打开,以这种方式打开的文件不能写 w 创建用于写的文件,如果原文件存在,则清空 a 向文件尾部追加,不存在时可创建 r+ 打开存在的文件,用于更新(读或写) w+ 创建一新文件用于读写 a+ 添加或创建一个用于读写的文件 t 以文本文件的方式打开 b 以二进制的方式打开 返回值:成功时返回指向文件FILE结构变量的指针,失败时返回NULL。 三、文件的关闭 语法: fclose(文件指针) 说明:关闭文件指针所指的文件,将保存在文件缓冲区中的内容存盘,释放文件结构变量。 例10.1 在外部存储器上建立一个文件,然后将其关闭。 //ecam101.c #includestdio.h main() { FILE *fp; fp=fopen(d:\\sunhui\\test.dat,w+); fclose(fp); } §10.3 常用文件读写函数 一、字节级 1. fputc() 用途:输出一个字符到一个流中(文件) 语法:int fputc(int c,FILE*stream); 返回值:成功时返回字符C,出错时返回EOF。 头文件:stdio.h //ecam102.c #includestdio.h main(){ char c; FILE *fp; fp=fopen(d:\\sunhui\\test.dat,w+); do{ c=getchar(); fputc(c,fp); }while(c!=q); fclose(fp); } 2 fgetc() 函数 用途:从流中读取字符 语法:int fgetc(FILE *stream); 返回值:成功时,返回读取的字符,在文件结束或出错时,返回EOF。 //exam113.c #includestdio.h main() { FILE *fp; char c; fp=fopen(d:\\sunhui\\test.dat,r+); do{c=fgetc(fp); putchar(c); }while(c!=EOF);
文档评论(0)