C课程设计 文件合并

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:19:40
问题描述:
给定两个文件,文件内容一些已经排好序的字符串,一个字符串占一行,将两个文件内容合并输出到另一文件中,要求文件内容仍然有序。

基本要求:
1.采用一种或多种读写文件的方式读取文件内容,实现上述要求;
2.用数组结构存储文件内容;
3.设计一种策略实现排序。

(请各位大虾帮帮偶啊~~~~~~~~~~不胜感激!)
建立3个.txt文件
文件A中已输入:
aaa
bcd
文件B中已输入:
abc
cdf
文件C为空

运行程序后,文件C中应该显示:
aaa
abc
bcd
cdf

只要能达到要求的
越简单的越好
(因为急 补充时出点错误 文件B中字符串是这样已排序的,哈)
大侠!!!运行不了啊~ 而且我们才学到二维数组,3维的高不明白啊,求求!能否用2维的做个,谢谢啦!谢谢啦!谢谢啦!谢谢啦!谢谢啦!谢谢啦!谢谢啦!谢谢啦!谢谢啦!

已经排好序的字符串耶,为什么你提供的字符串未排序呢?
假设以#结尾
#include<stdio.h>
#include<string.h>
void main(){
char ch[2][100][100];
FILE *A,*B,*C;
int i,j,s1,s2,l;
A=fopen("A.txt","r");
B=fopen("B.txt","r");
C=fopen("C.txt","w");
for(i=0;i<100;i++){
fscanf(A,"%s",ch[0][i]);
if(!strcmp(ch[0][i],"#"))break;
}s1=i;if(i==100)s1=i-1;
for(i=0;i<100;i++){
fscanf(B,"%s",ch[1][i]);
if(!strcmp(ch[1][i],"#"))break;
}s2=i;if(i==100)s2=i-1;
for(i=0,j=0;;){
if(i==s1){
for(;j<s2;j++)fprintf(C,"%s\n",ch[1][j]);
break;
}if(j==s2){
for(;i<s1;i++)fprintf(C,"%s\n",ch[0][i]);
break;
}
l=strcmp(ch[0][i],ch[1][j]);
if(!l){
fprintf(C,"%s\n%s\n",ch[0][i],ch[1][j]);
i++;j++