c语言 文件
/****有两个磁盘文件a.txt文件内容为(to catch up)和b.txt文件内容为(a moment),要求合并两个文件,产生一个新文件,新文件的内容是按字母顺序。即文件内容为:aaccehmmnooptttu*******/
#include "stdio.h"
#include "stdlib.h"
void main ()
{
FILE *fp1,*fp2,*fp3;
char ch1,ch2,ch3;
int i=0,j,temp;
if(!(fp1=fopen("d:\\exe\\a.txt","r")))
{
printf("not been found !");
exit(0);
}
if(!(fp2=fopen("d:\\exe\\b.txt","r")))
{
printf("not been found !");
exit(0);
}
if(!(fp3=fopen("d:\\exe\\c.txt","w")))
{
printf("not been found !");
exit(0);
}
ch1=fgetc(fp1);
while(ch1!=EOF)
{
ch3[ i++]=ch1;
ch1=fgetc(fp1);
} //将ch1的值存入数组ch3。
ch2=fgetc(fp2);
while(ch2!=EOF)
{
ch3=ch2;
i++;
ch2=fgetc(fp2);
} //将ch2的值存入数组ch3。
ch3='\0';
for(j=0;ch3;j++)
{
printf("%c",ch3);
}
for(i=0;ch3;i++)
{
for(j=i+1;ch3;j++)
{
if(ch3>ch3)
{
temp=ch3;
ch3=ch3;
ch3=temp;
}
}
} //冒泡法排序。
for(i=0;ch3;i++)
{
fputc(ch3,fp3);
}
fclose (fp1);
fclose (fp2);
fclose (fp3);
}
本帖最后由 jhq999 于 2021-8-13 20:11 编辑
{:5_105:} 本帖最后由 jhq999 于 2021-8-13 21:05 编辑
/****有两个磁盘文件a.txt文件内容为(to catch up)和b.txt文件内容为(a moment),要求合并两个文件,
产生一个新文件,新文件的内容是按字母顺序。即文件内容为:aaccehmmnooptttu*******/
#include "stdio.h"
#include "stdlib.h"
void main ()
{
FILE *fp1,*fp2,*fp3;
char ch1,ch2,ch3;
int i=0,j,temp;
if(!(fp1=fopen("d:\\exe\\a.txt","r")))
{
printf("not been found !");
exit(0);
}
if(!(fp2=fopen("d:\\exe\\b.txt","r")))
{
printf("not been found !");
exit(0);
}
if(!(fp3=fopen("d:\\exe\\c.txt","w")))
{
printf("not been found !");
exit(0);
}
ch1=fgetc(fp1);
while(ch1!=EOF)
{
ch3[ i++]=ch1;
ch1=fgetc(fp1);
} //将ch1的值存入数组ch3。
ch2=fgetc(fp2);
while(ch2!=EOF)
{
ch3=ch2;
i++;
ch2=fgetc(fp2);
} //将ch2的值存入数组ch3。
ch3='\0';
for(j=0;ch3;j++)
{
printf("%c",ch3);
}
for(i=0;ch3;i++)/////////////////////////////////////////////////////////////////把ch3替换成ch3,否则只能进行第一轮冒泡
{
for(j=i+1;ch3;j++)
{
if(ch3>ch3)
{
}
}
} //冒泡法排序。
for(i=0;ch3;i++)
{
fputc(ch3,fp3);
}
fclose (fp1);
fclose (fp2);
fclose (fp3);
}
? ? jhq999 发表于 2021-8-13 20:52
你的冒泡条件丢了
jhq999 发表于 2021-8-13 20:52
我遇到的问题有两个,一个是存放在ch3的时候,也就是31-38行的存入后输出的结果是:
to catch up
a moment
为啥多了回车T_T。
还有后面产生的新文件,运行之后得不到结果,
本帖最后由 jhq999 于 2021-8-14 06:55 编辑
我是用vs2012写的打开文件的函数不一样,但意思一样,你要是复制的话,把打开文件那3段修改一下.
void main ()
{
FILE *fp1,*fp2,*fp3;
char ch1,ch2,ch3;
int i=0,j,temp;
if(fopen_s(&fp1,"e:\\a.txt","r"))
{
printf("not been found !");
return;
}
if(fopen_s(&fp2,"e:\\b.txt","r"))
{
printf("not been found !");
return;
}
if(fopen_s(&fp3,"e:\\c.txt","w"))
{
printf("not been found !");
return;
}
ch1=fgetc(fp1);
while(ch1!=EOF)
{
ch3[ i++]=ch1;
ch1=fgetc(fp1);
} //将ch1的值存入数组ch3。
ch2=fgetc(fp2);
while(ch2!=EOF)
{
ch3=ch2;
i++;
ch2=fgetc(fp2);
} //将ch2的值存入数组ch3。
ch3='\0';
for(j=0;ch3;j++)
{
printf("%c",ch3);
}
for(i=0;ch3;i++)//////////////////////ch3换成ch3,用ch3,i=1时j已经循环到‘\0’了ch3已经是0,退出循环。
{
for(j=i+1;ch3;j++)
{
if(ch3>ch3)
{
temp=ch3;
ch3=ch3;
ch3=temp;
}
}
} //冒泡法排序。
for(i=0;ch3;i++)///////////////////ch3换成ch3,和上面说明一样ch3已经是0,直接啥也没写。
{
fputc(ch3,fp3);///////////////ch3换成ch3ch3就是0,只在c.txt里写了一个'\0'
}
fclose (fp1);
fclose (fp2);
fclose (fp3);
getchar();
} jhq999 发表于 2021-8-14 06:42
我是用vs2012写的打开文件的函数不一样,但意思一样,你要是复制的话,把打开文件那3段修改一下.
牛哇牛哇,谢谢兄弟
页:
[1]