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

#include<stdio.h>#include<stdlib.h>#include<string.h>voidmain(){FILE*fp;chara[100];if... #include <stdio.h>
#include <stdlib.h>
#include <string.h>

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]);
i++;

}
a[i]='\0';
putchar('\n');
fclose(fp);
int n=i;
int k;
char t;
for(i=0;i<n-1;i++)
{
k=i;
for(int j=i+1;j<n;j++)
{
if(a[i]>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<n)
{
fputc(a[i],fp);
putchar(a[i]);
i++;
}

fclose(fp);

putchar('\n');

}

哪写错了??1.dat和2.dat里都是在另外一个程序里输入了一行字符串,比如1里面是love 2里面是you 结果这个程序在读1和2的时候只显示部分字符,不能显示全。。
然后下面的3.dat也显示不完全字符串。。什么情况
展开
 我来答
手机用户30605
2011-09-24 · TA获得超过231个赞
知道答主
回答量:864
采纳率:33%
帮助的人:288万
展开全部
while的里面取一次,while的时候取了一次,所以不对。后面的排序应该判断if(a[k]>a[j]) k=j;才是正确的,要遍历j到n,k取最小值的下标。注意:在这里break是不对的。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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<n-1;i++)
{
k=i;
for(int j=i+1;j<n;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<n)
{
fputc(a[i],fp);
putchar(a[i]);
i++;
}

fclose(fp);

putchar('\n');

}
223得到好处
2011-09-22
知道答主
回答量:44
采纳率:0%
帮助的人:8.6万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wa12344a
2011-09-22
知道答主
回答量:3
采纳率:0%
帮助的人:5011
展开全部
不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
短笛古箫悠5476
2011-09-22 · TA获得超过6.2万个赞
知道大有可为答主
回答量:2.6万
采纳率:0%
帮助的人:3456万
展开全部
.....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式