C语言文件节章里一条简单的问题
有两个磁盘文件”A”和”B”,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件”C”中。(你可以自己创建A B文件)#include "stdio.h"
#include <stdlib.h>
void main()
{
FILE *fp,*fo,*fi;
char e[500];
int i=0,q=0;
char t;
if((fp=fopen("A","r"))==NULL)
{
printf("cannot open A");
getch();
exit(0);
}
if((fo=fopen("B","r"))==NULL)
{
printf("cannot open B");
getch();
exit(0);
}
if((fi=fopen("C","w"))==NULL)
{
printf("cannot open C!");
getch();
exit(0);
}
while(!feof(fp))
{
e[i]=fgetc(fp);
i++;
}
while(!feof(fo))
{
e[i]=fgetc(fo);
i++;
}
i++;
i=0;
while(e[i]!='\0')
{
while(e[q]!='\0')
{
if(e[q]>e[i]) {t=e[q];e[q]=e[i];e[i]=t;} /*假设我是按字符从大到小排序*/
q++;
}
i=i+1;
q=i;
}
i=0;
while(e[i]!='\0')/*1,用'\0'会在结尾出现ij字符,但你可以自己试改成EOF就没这样的问题,这是为什么?
2,还有当你把上面注释部分的改成从小到大排序即e[q]<e[i],这时就C文件里是0字节的,
当你把EOF改回'\0',这时C文件里有字符了,可是开头又有两个ij,这是为什么?请高手告诉我*/
{
fputc(e[i],fi);
i++;
}
fclose(fp);
fclose(fo);
fclose(fi);
getch();
}