文本文件合并……..

有两个文本文件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;
    
    
} 

img

请看👉 :文本文件的读写