|
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,我们可以想象一下,如果我们每次读取一个字符都要判断是否到达文件尾,那样效率也太低了,那如何判断文件是否已经结束了呢?
|