Credo che la versione con feof() non funzioni correttamente perché all'esecuzione dell'ultima fscanf() che avviene con successo il flag EOF del file non è ancora settato; ciò invece accade con la successiva chiamata a fscanf() della quale però si recuperano gli elementi in output senza assicurarsi che questi siano stati effettivamente letti (e in effetti non lo sono, essendo alla fine del file!) e di fatto l'inizializzazione del nuovo nodo contiene dati "inconsistenti" (tutto a 0).

Stefano.