C语言,有两个磁盘文件A,B,各存放一行字母,要求把两个文件信息合并并按字母顺序排列,然后存到新文件C中

2024-12-18 04:54:07
推荐回答(4个)
回答1:

while的里面取一次,while的时候取了一次,所以不对。后面的排序应该判断if(a[k]>a[j]) k=j;才是正确的,要遍历j到n,k取最小值的下标。注意:在这里break是不对的。

#include
#include
#include

void main()
{
FILE *fp;
char a[100];

if((fp=fopen("1.dat","r"))==NULL)
{
printf("文件打开错误");
exit(0);

}

int i=0;

a[i]=fgetc(fp);
while(a[i]!=EOF)
{
putchar(a[i]);
i++;
a[i]=fgetc(fp);
}
putchar('\n');
fclose(fp);

if((fp=fopen("2.dat","r"))==NULL)
{
printf("文件打开错误");
exit(0);

}

a[i]=fgetc(fp);
while(a[i]!=EOF)
{
putchar(a[i]);
i++;
a[i]=fgetc(fp);
}
a[i]='\0';
putchar('\n');
fclose(fp);

int n=i;
int k;
char t;
for(i=0;i {
k=i;
for(int j=i+1;j {
if(a[k]>a[j]) k=j;

}
if(k!=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}

if((fp=fopen("3.dat","w"))==NULL)
{
printf("文件打开错误");
exit(0);

}

i=0;
while(i {
fputc(a[i],fp);
putchar(a[i]);
i++;
}

fclose(fp);

putchar('\n');

}

回答2:

#include
#include
#include

void main()
{
FILE *fp;
char a[100];

if((fp=fopen("1.dat","r"))==NULL)
{
printf("文件打开错误");
exit(0);

}
int i=0;
while(fgetc(fp)!=EOF)
{
a[i]=fgetc(fp);
putchar(a[i]);
i++;

}
putchar('\n');
fclose(fp);

if((fp=fopen("2.dat","r"))==NULL)
{
printf("文件打开错误");
exit(0);

}

while(fgetc(fp)!=EOF)
{
a[i]=fgetc(fp);
putchar(a[i]);

回答3:

不知道

回答4:

.....