Ti crei un array di tanti puntatori a stringa quante sono le righe, ciascuno dei quali puntatori punta alla stringa contenente la riga corrispondente che avrai caricato in precedenza. Quindi passi a qsort l'array di puntatori dicendogli di usare come funzione di confronto una funzione che avrai definito in questo modo:
.codice:int cmplines(void *arg1, void *arg2) { return strcmp(*(char **)arg1,*(char **)arg2); }