# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# define MAXCHARS 80
/** Taxinomisi grammon arxeiou **/

int main()
{
	char **lines;
	char inputfile[MAXCHARS+1];
	char outputfile[MAXCHARS+1];
	int linecount,i,j;
	char line[MAXCHARS+1];
	char templine[MAXCHARS+1];
	FILE *fpin,*fpout;
	printf("Doste arxeio eisodou?\n");
	gets(inputfile);
	printf("Doste arxeio exodou?\n");
	gets(outputfile);
	linecount=0;
	fpin=fopen(inputfile,"r");
	if(fpin==NULL)
	{
		printf("Adynamia anoigmatos %s gia diabasma\n",inputfile);
	}
	else
	{
		while(fgets(line,MAXCHARS,fpin)!=NULL) linecount++;
		fclose(fpin);
		fpout=fopen(outputfile,"w");
		if(fpout==NULL)
		{
			printf("Adynamia anoigmatos %s gia grapsimo \n",outputfile);
		}
		else
		{
			/** Malloc **/
			lines=(char **)malloc(sizeof(char *) *linecount);
			for(i=0;i<linecount;i++) lines[i]=(char *)malloc((MAXCHARS+1) * sizeof(char));
			fpin=fopen(inputfile,"r");
			for(i=0;i<linecount;i++)
			{
				fgets(lines[i],MAXCHARS,fpin);
			}
			fclose(fpin);
			/** Sort lines **/
			for(i=0;i<linecount;i++)
			{
				for(j=0;j<linecount-1;j++)
				{
					if(strcmp(lines[j+1],lines[j])>0)
					{
						strcpy(templine,lines[j]);
						strcpy(lines[j],lines[j+1]);
						strcpy(lines[j+1],templine);
					}
				}
			}
			for(i=0;i<linecount;i++)
			{
				fprintf(fpout,"%s",lines[i]);
			}
			fclose(fpout);
			for(i=0;i<linecount;i++)
			 free(lines[i]);
			free(lines); 
		}
	}
	return 0;
}
