指针、文件计分作业---排序输出文件
【问题描述】读取一个文本文件1.txt,然后将这个文件的内容,排序写到另一个文件2.txt中。【输入形式】从文件1.txt中读信息。
【输出形式】排序内容写入2.txt文件中。
【样例输入】
is worth doing well
【样例输出】
doing is well worth
【样例说明】
【评分标准】
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fin=NULL,*fout=NULL;
int num=0,i,j,k=0;
fin=fopen("1.txt","r");
char **a=NULL,ch[50];
a=(char**)calloc(num+1,sizeof(char*));
a[num]=(char*)calloc(50,sizeof(char));
while(1)
{
a=(char**)realloc(a,sizeof(char*)*(num+1));
a[num]=(char*)calloc(50,sizeof(char));
for(j=0;a[num][j-1]!=' '&&a[num][j-1]!=EOF;j++)
a[num][j]=fgetc(fin);
if(a[num][j-1]==EOF)
{
a[num][j-1]=' ';
break;
}
num++;
}
fclose(fin);
for(i=0;i<num;i++) //冒泡排序
{
for(j=0;j<num-i;j++)
{
do
{
if((a[j][k]>a[j+1][k]))
{
memcpy(ch,a[j],50);
memcpy(a[j],a[j+1],50);
memcpy(a[j+1],ch,50);
break;
}
k++;
}while(a[j][k-1]==a[j+1][k-1]);
k=0;
}
}
fout=fopen("2.txt","w");
for(i=0;i<num+1;i++) //输出
fprintf(fout,"%s",a[i]);
fclose(fout);
free(a); //释放动态内存
for(i=0;i<num;i++)
free(a[i]);
return 0;
}
