有两个磁盘文件,各存放一行字母,要求把这两个文件中的信息合并,按照字母顺序排列,输出到文件C
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp1,*fp2,*fp3;
char s[100],temp,ch;
int i,j;
if((fp1=fopen("D:\\A.txt","r"))==NULL) //双引号
{
printf("error!\n");
exit(0);
}
if((fp2=fopen("D:\\B.txt","r"))==NULL)
{
printf("error!\n");
exit(0);
}
if((fp3=fopen("D:\\C.txt","w"))==NULL)
{
printf("error!\n");
exit(0);
}
for(i=0;(ch=fgetc(fp1))!=EOF;i++) //修改为EOF 用fgetc读取
s[i]=ch;
for(i;(ch=fgetc(fp2))!=EOF;i++)
s[i]=ch;
/*for(i;s[i]!=EOF;i++)
fscanf(fp2,"%c",&s[i]); */
s[i]='\0';
for(i=0;s[i]!='\0';i++)
{
for(j=i+1;s[j]!='\0';j++)
{
if(s[i]>s[j])
{
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
}
puts(s);
for(i=0;s[i]!='\0';i++)
fprintf(fp3,"%c",s[i]);
fclose(fp1);
fclose(fp2);
fclose(fp3);
system("pause");
return 0;
}
文章注释部分用利用fscanf循环读取不对是因为,fgetc返回值给ch,平时是字符,最后是EOF,然而fscanf不行,它并不会从文件中读到EOF,EOF是fgetc的一个返回值,而不是从文件读取的
终于想到如何用fscanf读取了,在注释部分利用如下代码,之间读入字符串嘛,更简单了!!
fscanf(fp1,"%s",s);
fscanf(fp2,"%s",b);
strcat(s,b);