#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 100
int main()
{
FILE *in,*out1,*out2;
char ch1,ch2;
char s[M],t;
int i=0,m,n,len;
//打开这三个文件
if((in=fopen("xiaosun.txt","r"))==NULL)
{
printf("error");
exit(0);
}
if((out1=fopen("text.txt","r"))==NULL)
{
printf("error");
exit(0);
}
if((out2=fopen("C.txt","w"))==NULL)
{
printf("error");
exit(0);
}
//将文件text中的内容,追加到xiaosun中的后面。
/* while((ch1=fgetc(in))!=EOF)//送入xiaosun文件中追加
{
fputc(ch1,out2);
// putchar(ch1);//把in指针的移动末尾
}
while((ch2=fgetc(out1))!=EOF)//送入xiaosun文件中追加
{
fputc(ch2,out2);
}*/
//把xiaosun文件的内容,复制到c中。
//对c文件中的字符进行排序
//out2的指针要重新回到开头
while((ch1=fgetc(in))!=EOF)//送入xiaosun文件中追加
{
s[i++]=ch1;//把字符全部取出来放在数组s中进行排序操作
}
while((ch2=fgetc(out1))!=EOF)//送入xiaosun文件中追加
{
s[i++]=ch2;//把字符全部取出来放在数组s中进行排序操作
}
//进行冒泡排序
s[i]='\0';//记住这个地方一定要加,否则调试会有错误
len=strlen(s);
printf("字符串的长度为:%d\n",len);
for(m=0;m<len-1;m++)
{
for(n=0;n<len-m-1;n++)
{
if(s[n]>s[n+1])
{
t=s[n];
s[n]=s[n+1];
s[n+1]=t;
}
}
}
fputs(s,out2);
fclose(in);
fclose(out1);
fclose(out2);
return 0;
}
非常需要注意是:字符串结束标志一定要加上。
基本思想是:将xiaosun.txt中的内容和text.txt中的内容取出来放在字符数组s中,对数组中的字符进行排序,然后把字符串在写入c文件中。
谭浩强第四版文件那章的系统第四题。