有两个文本文件1.txt和2.txt,要求把这两个文件中的信息合并,保存到一个新文件3.txt中。能详细解释一下吗,用c语言编写
用fopen打开文件,fread读取内容,然后fwrite写入新文件
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp1,*fp2,*fp3;
char buf[10000] = {0};
int sz = 0;
fp1 = fopen("D:\\a.txt","r");
fp2 = fopen("D:\\b.txt","r");
fp3 = fopen("D:\\c.txt","w");
sz = fread(buf,1,10000,fp1);
fwrite(buf,1,sz,fp3);
sz = fread(buf,1,10000,fp2);
fwrite(buf,1,sz,fp3);
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
合并文件的一个简单的实现就是,依次读取1.txt文件到3.txt,然后再读取2.txt读取3.txt中即可。
如果用feof判断是否达到文件结尾,有一个需要注意的地方是,feof是根据上一次读取是否到达文件结尾来返回一个非零值(达到结尾)或零值(没有达到文件结尾),所以需要在读取后再调用一次feof判断上次读取是否到到达文件结尾,如果上次没有达到文件结尾则写入3.txt,如果达到了则不操作,这个判断用于避免将异常数据读入3.txt中。
参考资料:
C Primer Plus第六版中文版 第430页
#include <stdio.h>
int main(void){
FILE * fp1 = fopen("1.txt","r");
if(fp1==NULL){
printf("打开文件1.txt失败!\n");
return -1;
}
FILE * fp2 = fopen("2.txt","r");
if(fp2==NULL){
printf("打开文件2.txt失败!\n");
return -1;
}
FILE * fp3 = fopen("3.txt","w");
if(fp3==NULL){
printf("打开文件 或创建3.txt失败!\n");
return -1;
}
char ch;
//读取文件1.txt到3.txt中
while (feof(fp1)==0){
fscanf(fp1,"%c",&ch);
if(feof(fp1)==0){ //如果1.txt没有达到文件结尾,则写入3.txt中
fprintf(fp3,"%c",ch);
}
}
fclose(fp1);
//读取文件2.txt到文件3.txt中
while (feof(fp2)==0){
fscanf(fp2,"%c",&ch);
if(feof(fp2)==0){ //如果2.txt没有达到文件结尾,则写入3.txt中
fprintf(fp3,"%c",ch);
}
}
fclose(fp2);
fclose(fp3);
printf("合并文件成功!\n");
return 0;
}