codice:
int main(int argc, const char *argv[]) {
	char **list;	
	int length,size;

	list=loadlist((char *)argv[1],&length,&size);
	list=sortlist(list,length,size);	
	printlist((char *)argv[2],list,length,size);

	return 0;
}
codice:
void readsize(char *filename, int *length, int *size) {
	FILE *in=fopen(filename,"r");
	int i=0,j=0;
	char tmp;

	while(fscanf(in,"%c",&tmp)!=EOF && tmp!='\n') j++;
	rewind(in);
	while(fscanf(in,"%*s\n")!=EOF) i++;
	(*length)=i; (*size)=j;
	fclose(in);
}

char *readline(FILE *in,int size) {
	char *line=(char *)malloc(size*sizeof(char)), tmp;
	int i=0;

	while(i<size && fscanf(in,"%c",&line[i])!=EOF) i++;
	fscanf(in,"%c",&tmp);
	if(tmp!='\n') {
		printf("Error: malformed file\n");
		return NULL;
	}

	return line;
}

char **loadlist(char *filename, int *length, int *size) {
	int i;
	char **list;
	FILE *in=fopen(filename,"r");

	readsize(filename,length,size);

	list=(char **)malloc((*length)*sizeof(char *));

	for(i=0; i<(*length); i++)
		list[i]=readline(in,(*size));
	
	fclose(in);

	return list;
}

void printlist(char *filename, char **list, int length,int size) {
	FILE *out=fopen(filename,"w");
	int i;
	
	for(i=0; i<length; i++) {
		list[i][size] = '\0';
		fprintf(out,"%s\n",list[i]);	
	}
	
	fclose(out);
}
manca solamente
codice:
 sortlist()
che è lunghissimo e complicato e che comunque
anche cambiando il tipo di ordinamento l'errore rimane lo stesso..

Stò anche pensando che l'errore potrebbe essere nella creazione del file random..

GRAZIE