用C语言解决文件合并问题

题目一:文件合并问题
(1)问题描述
有两个磁盘文件A和B,各存放一串字母,要求把这两个文件中的信息合并,输出到一个新文件C中。
(2)算法分析
在.cpp所在的文件夹里建立A.doc和B.doc,并向其中输入字母,再编写一个用于输出文件内容的程序,将文件信息合并。
(3)源代码
磁盘文件A:

#include 
void main( )
{ FILE *fp;  /* 定义一个文件指针变量fp */
int c; /* c为存放字符的变量 */
char filename[40]; /* filename用于存放数据文件名 */
printf("filename: ");/* 提示输入磁盘文件名 */
  gets(filename);  
  if ((fp=fopen(filename,"w"))==NULL)
      { printf("Can't open the %s\n", filename); 
         return;}
  while ((c=getchar( ))!=EOF) /*键盘文件结束标志:输入Ctrl+z,显示^Z后回车*/
 putc(c, fp); /* 将键盘输入的字符写到文件中*/
 fclose(fp); /* 建立文件结束,关闭文件 */
printf("outfile:\n");
  fp=fopen(filename,"r"); /* 以读方式打开文本文件 */
 while ((c=getc(fp))!=EOF) /* 未读到文件结束标志时 */
     putchar(c); /* 在显示器显示读出的字符 */
      fclose(fp); /* 读文件结束,关闭文件 */

}  

磁盘文件B:

#include 
void main( )
{ FILE *fp;  /* 定义一个文件指针变量fp */
int c; /* c为存放字符的变量 */
char filename[40]; /* filename用于存放数据文件名 */
printf("filename: ");/* 提示输入磁盘文件名 */
  gets(filename);  
  if ((fp=fopen(filename,"w"))==NULL)
      { printf("Can't open the %s\n", filename); 
         return;}
  while ((c=getchar( ))!=EOF) /*键盘文件结束标志:输入Ctrl+z,显示^Z后回车*/
 putc(c, fp); /* 将键盘输入的字符写到文件中*/
 fclose(fp); /* 建立文件结束,关闭文件 */
printf("outfile:\n");
  fp=fopen(filename,"r"); /* 以读方式打开文本文件 */
 while ((c=getc(fp))!=EOF) /* 未读到文件结束标志时 */
     putchar(c); /* 在显示器显示读出的字符 */
      fclose(fp); /* 读文件结束,关闭文件 */

}  

合并A、B文件:

#include"stdio.h"
#include"stdlib.h"
void main()
{   FILE *fp;
int i,j, n,i1;
char c[100],t,ch;
if((fp=fopen("a1","r"))==NULL)
{
printf("Can not open the file\n");
exit(0);
}
printf("\n file A:\n");
for(i=0;(ch=fgetc(fp))!=EOF;i++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
i1=i;
if((fp=fopen("b1","r"))=NULL)
{printf("\n Can not open the file");
exit(0);
}
printf("\n file B:\n");
for(i=i1;(ch=fgetc(fp))!=EOF;i++)
{c[i]=ch;
putchar(c[i]);
}
fclose(fp);
n=i;
for(i=0;ifor(j=i+1;jif(c[i]>c[j])
{t=c[i];
c[i]=c[j];
c[j]=t;
}
printf("\n file C:\n");
fp=fopen("c1","w");
for(i=1;iputchar(c[i]);
}
fclose(fp);
}

运行结果:
用C语言解决文件合并问题_第1张图片

你可能感兴趣的:(c语言学习)