Програма создаст файлы автоматически,отсортирует и запишет всё куда надо.Если такой вариант вам подходит я её вставляю в ответ.Ещё проверьте может где то что и не досмотрел.
#include <cstdlib>
#include <iostream>
using namespace std;
void sort();
int main(int argc, char *argv[])
{
FILE *in;char* mass1=new char;int a;
metka:cout<<"Slovo-->1,Sortirovka-->2,Raspeciatat 1.txt:-->3"<<"\n";
cin>>a;
if(a == 1){
in=fopen("1.txt","a");
cin>>mass1;
fprintf(in,"%s%s",mass1,"\n");
fclose(in);
delete[]mass1;
goto metka;}
if(a == 2) sort();
if(a == 3){
in=fopen("1.txt","r");
while(fscanf(in,"%s",mass1) != EOF){ //vyvodim soderzimoje faila 2.txt
cout<<mass1<<"\n";}
fclose(in);
goto metka;}
system("PAUSE");
return EXIT_SUCCESS;
}
void sort(){
FILE *out,*in;char* mass=new char;
in=fopen("2.txt","w");
fprintf(in,""); //ocisciajem fail 2.txt dlia novoj sortirovki
fclose(in);
for(int i=1;i<20;i++){ //sdes ustanavlivaem dlinu slov
out=fopen("1.txt","r");
in=fopen("2.txt","a");
while(fscanf(out,"%s",mass) != EOF){
if(strlen(mass) == i){
fprintf(in,"%s%s",mass,"\n");
}}
delete[]mass;
fclose(out);
fclose(in);}
out=fopen("2.txt","r");
while(fscanf(out,"%s",mass) != EOF){ //vyvodim soderzimoje faila 2.txt
cout<<mass<<"\n";}
fclose(out);
}