- 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语言程序设计文件
第八章 文件操作 ;§1 概述 ; 每一个被使用的文件都在内存中开辟一个区域,用来存放文件的有
关信息。这些信息是保存在一个结构体类型的变量中的。该结构体类型
的名称为FILE,其定义如下:
typedef struct {
int _fd; 文件号
int _cleft; 缓冲区中剩下的字符
int _mode; 文件操作模式
char * _nextc; 下一个字符位置
char * _buff; 文件缓冲区位置
}FILE;; 有了FILE类型之后,我们就可以用它来定义文件类型的变量、
数组和指针。如:
FILE fp[256]; 定义了一个结构体数组 fp,包含256个元素。
FILE *fp; 定义了一个指向FILE类型结构体的指针变量fp。有了这
个定义之后,就可以用它指向一个文件,然后通过它来实现对文件
的访问。; 对文件的操作无非是: ①文件的打开 ②文件的关闭 ③文件的读
④文件的写 这四个操作。在C语言中使用专门的库函数来完成。
一.文件的打开
使用fopen()函数来实现打开文件,而且在调用fopen()之前,需
先定义一个FILE类型的指针。一般使用格式如下:
FILE *fp;
fp=fopen(“文件名”, “打开方式”);
通过这一条语句,就使得fp与“文件名”所指定的文件建立起了联系。
说明:
1.文件名必须是文件的全名。
2.打开方式如下表所示
;§3 文件操作 ; 在上述列出的打开方式中,并非所有的C语言版本都完全提供。因
此在使用是要注意所使用的版本的规定。
3.在使用fopen()时,如果打开不成功,将会返回一个错误信息,
即空指针值(NULL),在stdio.h文件中被定义为0。
造成错误的原因很多:用”r”方式打开一个不存在的文件;磁盘出
故障;磁盘写保护或已满无法建立新文件等。因此常用下面的方法进行
检测。
If ((fp=fopen(“lx.doc”,r”)==NULL) {
Printf(“connot open this file!\n”);
Exit(0);
}; 二.文件的关闭
在使用完一个文件之后,要养成关闭文件的习惯,否则将会造成数
据丢失。因为在向文件写数据时,是先将数据输出到缓冲区,待缓冲区
满后才正式输出到外存中的文件。如果当数据未充满缓冲区而程序结束
运行,就会将缓冲区中的数据丢失。
在C语言中使用fclose()来关闭文件。其含义就是切断文件指针和
文件之间的联系。其一般使用格式为:
fclose(文件指针);
如:fclose(fp);
fclose()函数也有返回值:当成功地执行了关闭操作时,返回值为
0,如果返回值为非0值,则表示关闭时有错误。; 三.文件的读写
当一个文件打开之后,就可以对它进行读写(又称之为访问)了。
常用的函数如下:
1.fgetc()和 fputc()(或者putc()和 getc())
▲fputc():把一个字符写到磁盘文件上去。
一般使用形式为:fputc(ch,fp);
其中:ch ---要输出的字符变量
fp----已定义的文件指针
当fputc()的返回值为EOF(即 –1)时,表明输出失败;否则返回
要输出的字符。;§3 文件操作 ; 应用举例:用C语言编程实现操作系统中的文件复制命令。
copy 源文件名 目标文件名
#include stdio.h
main(argc,argv)
{ FILE *in, *out;
char ch;
if(argc!=3)
{ printf(“please enter file name!\n”);
exit(0);
}
if((in=fopen(argv[1],”r”)==NULL)
{ printf(“ source file is not exsit\n”);
exit(0);
}
文档评论(0)