码迷,mamicode.com
首页 > 其他好文 > 详细

判断文件结束函数 feof

时间:2016-06-10 20:21:35      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:

  在上一节例2中,程序从一个文件中逐个读取字符并输出到屏幕上显示,在 while 循环中以 EOF 作为文件结束的标志。这种以 EOF 作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的 ASCII 码值的形式存放。我们知道,ASCII 码值的范围是 0~255,不可能出现 -1,因此可以用 EOF 作为文件结束的标志。

  当把数据以二进制形式存放到文件中时,就会有 -1 值的出现,此时不能采用 EOF 作为二进制文件的结束标志。为解决这一问题,ANSI C 提供一个 feof 函数,用来判断文件是否结束。如果遇到文件结束,函数 feof(fp) 的值为 1,否则为 0。feof 函数既可以判断二进制文件是否结束,也可以用来判断文本文件是否结束。

  例1 编写程序,用于把一个文本文件(源文件)复制到另一个文件(目标文件)中。源文件名为 file_a.dat,目标文件名为 file_b.dat。

  程序如下: 

技术分享
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 //声明文件复制函数
 5 void filecopy(FILE *fpin, FILE *fpout);
 6 
 7 int main()
 8 {
 9     FILE *fpin, *fpout;
10     
11     fpin = fopen("D:\\TEST\\file_a.dat", "r");    //打开输入文件
12     if (fpin == NULL)
13     {
14         printf("Can‘t open this file !\n");
15         exit(0);        //使用exit函数,必须包含stdlib.h头文件
16     }
17     
18     fpout = fopen("D:\\TEST\\file_b.dat", "w");    //打开输出文件
19     
20     filecopy(fpin, fpout);                        //文件复制
21     
22     //关闭输入、输出文件
23     fclose(fpin);
24     fclose(fpout);
25     return 0;
26 }
27 
28 //定义 filecopy 函数
29 void filecopy(FILE *fpin, FILE *fpout)
30 {
31     char ch;
32     ch = getc(fpin);    // 先读一个字符,用 feof 函数判断是否为空文件
33     //遇到文件结束标志,函数 feof(fp) 值为1,否则为0
34     while (!feof(fpin))
35     {
36         putc(ch, fpout);
37         ch = getc(fpin);    // 逐个字符进行复制
38     }
39 }
View Code

  源文件:

  技术分享

  目标文件:

  技术分享

判断文件结束函数 feof

标签:

原文地址:http://www.cnblogs.com/web1013/p/5568597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!