指针、文件计分作业---排序输出文件
【问题描述】读取一个文本文件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; }