Una volta letta una riga del file, per separare il cognome dal nome puoi usare la fuzione strtok, di cui ti scrivo il prototipo:
char* strtok(s,ct)
la quale ricerca in s i token delimitati dai caratteri di ct (in questo caso uno spazio, cioè " ", ma dopo ti dirò i problemi di ciò).
Una serie di chiamate a strtok(s,ct) scinde s in token, ognuno delimitato da un carattere di ct. Alla prima invocazione nella serie, la funzione ha argomento s diverso da NULL; trova il primo token di s che consista di caratteri non in ct; termina sostituendo il carattere successivo di s con '\0', restituendo un puntatore al token.
Le chiamate successive, segnalate da un argomento s pari NULL, restituiscono il successvo token di questo tipo, cercandolo a partire dal punto della stringa immediatamente dopo la fine del token precedente.
La funzione restituisce NULL quando non trova più alcun token.
La stringa ct può variare a seconda di ciascuna chiamata.
Ora, usando come delimitarore lo spazio " " avresti dei problemi nel caso di cognomi composti da più parole e nel caso di più nomi, ti conviene quindi usare come delimitatore nel file, per distinguere un cognome da un nome, un altro carattere tipo +,-, ecc...
se non ti è chiaro qualcosa chiedimi pure, ciao