有两个磁盘文件“A”和“B”,各存放一行字母,今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件“C”中去。用void file_merge() 测试结果显示文件合并成功
fopen打开两个文件,fgets读取字符串,合并到一个字符串中再进行排序,最后输出到C文件
int sort(char *p)
{
int i,j,n=0;
for(i=0;p[i] != 0;i++)
n++;
char c;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(p[j] > p[j+1])
{
c = p[j];
p[j] = p[j+1];
p[j+1] = c;
}
}
return n;
}
void main()
{
FILE *fp1,fp2,fp3;
if((fp1=fopen("A","r"))==NULL)
return;
if((fp2=fopen("B","r"))==NULL)
return;
if((fp3=fopen("C","w"))==NULL)
return;
char buf[101] = {0};
fgets(buf,100,fp1);
char *p = buf;
while(*p != 0) p++;
fgets(p,100-(p-buf),fp2);
int len = sort(buf);
fputs(buf,fp3);
fclose(fp1);
fclose(fp2);
fclose(fp3);
}
思路一:
1.打开文件,分别读取内容,得到两个字符串,
2.将两个字符串拼接形成一个大串
3.大串排序
4.将大串写入文件
思路二:
1.打开文件,分别读取内容,得到两个字符串
2.两个字符串分别排序
3.逐个比较两个字符串中的字符大小,按规定的顺序写入文件
不知道你这个问题是否已经解决, 如果还没有解决的话: