| 
 | 
 
1鱼币 
源代码: 
#include <stdio.h> 
#include <stdlib.h> 
void main() 
{ 
      FILE *f_file, *f_pic, *f_finish; 
      char ch, pic_name[20], file_name[20], finish_name[20]; 
      printf("请输入要合成的图片、文件名称: \n"); 
      printf("图片: "); 
      scanf("%s", pic_name); 
      printf("文件: "); 
      scanf("%s", file_name); 
      printf("结果: "); 
      scanf("%s", finish_name); 
       
      if( !(f_pic = fopen(pic_name, "rb"))) 
      { 
            printf("Cannot open the ficture %s!\n", pic_name); 
            exit(0);   // 终止程序 
      } 
      if( !(f_file = fopen(file_name, "rb"))) 
      { 
            printf("Cannot open the file %s!\n", file_name); 
            exit(0);   // 终止程序 
      } 
      if( !(f_finish = fopen(finish_name, "wb"))) 
      { 
            printf("Cannot open the file %s!\n", finish_name); 
            exit(0);    // 终止程序 
      } 
      while( !feof(f_pic) ) 
      { 
            ch = fgetc(f_pic); 
            fputc(ch, f_finish); 
      } 
      fclose(f_pic); 
      while( !feof(f_file) ) 
      { 
            ch = fgetc(f_file); 
            fputc(ch, f_finish); 
      } 
      fclose(f_file); 
      fclose(f_finish); 
} 
问一下,文件复制过程中好像没有把文件结束标志EOF复制到目标文件中,那么目标文件的结束标志哪儿来的? 
新文件大小比源文件大小和要大2字节,他是怎么来的? 
 |   
 
 
最佳答案
查看完整内容 
首先明确一下EOF的概念,EOF是在stdio.h中定义的一个常量,为#define EOF (-1)  用来表示文件的结尾,当某些函数读取到文件尾时便返回EOF。另外,不是说每个文件的尾部都有一个专门的标志用来标示文件结尾,更不是说每个文件尾都有EOF,我们可以想象一下,如果我们每次读取一个字符都要判断是否到达文件尾,那样效率也太低了,那如何判断文件是否已经结束了呢? 
 
 
 
 
 
 
 |