C语言文件合并

有两个文件A.txt和B.txt,他们有相同的行数,需要将两个文件合并成一个新的文件C.txt,C文件的行数与A和B一样,C的内容为:将A和B的内容组成新的一行... 有两个文件A.txt和B.txt,他们有相同的行数,需要将两个文件合并成一个新的文件C.txt,C文件的行数与A和B一样,C的内容为:将A和B的内容组成新的一行 展开
 我来答
White_MouseYBZ
推荐于2018-03-01 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6611万
展开全部

设A.txt和B.txt都在当前目录下,读打开A.txt和B.txt,写打开C.txt。按字符循环读取A.txt文件一行并逐字符写入C.txt文件,但当读到'\n'时不写入\n'而启动另一内循环按字符读取B.txt文件的一行并逐字符写入C.txt文件,当写入'\n'后跳出内循环停止读取B.txt文件转而再去读A.txt文件的下一行……如此反复,直到遇到A.txt文件的EOF时结束。代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
int main(void){
    FILE *fpa,*fpb,*fpc;
    char ch;
    fpa=fopen("A.txt","r");
    fpb=fopen("B.txt","r");
    fpc=fopen("C.txt","w");
    if(!fpa || !fpb || !fpc){
        printf("Open the file(s) failure...\n");
        exit(0);
    }
    while((ch=fgetc(fpa))!=EOF){
        if(ch=='\n')
            while(fputc(ch=fgetc(fpb),fpc),ch!='\n' && ch!=EOF);
        else fputc(ch,fpc);
    }
    fclose(fpc);
    fclose(fpb);
    fclose(fpa);
    return 0;
}
百度网友b0e28cae4
推荐于2018-09-13 · TA获得超过4016个赞
知道大有可为答主
回答量:1275
采纳率:85%
帮助的人:613万
展开全部
#include <stdio.h>
const int MAX_SIZE_PER_LINE = 1024;

int main(int argc, char *argv[])
{
FILE * file_a,*file_b,*file_c;
char buffer[MAX_SIZE_PER_LINE*2];
file_a = fopen("a.txt","r");
file_b = fopen("b.txt","r");
file_c = fopen("c.txt","w");
while(NULL != fgets(buffer ,MAX_SIZE_PER_LINE,file_a))
{
//不是最后一行肯定会有换行符,消除这个换行符
if('\n' == buffer[strlen(buffer)-1])
fgets(buffer+strlen(buffer)-1 ,MAX_SIZE_PER_LINE,file_b);
//对于最后一行可能没有换行符的情况特殊处理
else
fgets(buffer+strlen(buffer) ,MAX_SIZE_PER_LINE,file_b);
fputs(buffer,file_c);
}
fclose(file_a);
fclose(file_b);
fclose(file_c);
return 0;
}

/*
A.txt :
-------
aa*
bb*
cc*
dd*
ee*
ff*
gg*

B.txt :
-------
11
22
33
44
55
66
77

C.txt :
-------
aa*11
bb*22
cc*33
dd*44
ee*55
ff*66
gg*77

说明: A.txt 和 B.txt 要放在可执行程序同一个目录下。C.txt 会自动在这个目录下生成。
*/
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水宫御子88
2015-09-27 · TA获得超过2238个赞
知道大有可为答主
回答量:3792
采纳率:50%
帮助的人:748万
展开全部
文件的合并要使用到FILE类型,以及文件的打开关闭,下面以图片文件和其它类型的文件进行合并为例,说说文件的合并:

#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp,*ff,*ftt;
char ch;
char fn1[20],fn2[20],ft[20];
printf("\t\t\t\t图片文件合成器\n");
printf("输入要合成的图片名称:");
scanf("%s",fn1);
printf("输入要合成的文件名称:");
scanf("%s",fn2);
printf("生成的名称:");
scanf("%s",ft);
if(!(fp=fopen(fn1,"rb")))//当不能打开图片文件的提示处理
{
printf("不能打开图片%s\n",fn1);
return;
}
if(!(ff=fopen(fn2,"rb")))
{
printf("不能打开文件%s",fn2);
return;
}
if(!(ftt=fopen(ft,"wb")))
{
printf("不能打开%s",ft);
return;
}

while(!(feof(fp) ))//写入图片文件
{
ch=fgetc(fp);
fputc(ch,ftt);
}
fclose(fp);


while(!(feof(ff)))//写入其它类型的文件
{
ch=fgetc(ff);
fputc(ch,ftt);
}
fclose(ff);
fclose(ftt);
system("pause");

}

要注意了,这个例子涉及的文件均要在cpp文件的同一级目录,要是不在同一级目录则要输入文件的路径,合成的文件也在cpp文件的目录下。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
遮天灬傲屹
2011-01-17 · 超过25用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:66.8万
展开全部
先读入AB文件第一行的数据,依次写入C
在读下一行。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乐正易文0IX
2011-01-19
知道答主
回答量:44
采纳率:0%
帮助的人:27.9万
展开全部
翻书吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式