Il primo ciclo while
codice:
while(fgets(str,MAXS,fp)!=NULL)
sscanf(str,"%s %s",ita,eng);
legge tutte le parole dal dizionario ma non le memorizza in due vettori come sarebbe necessario e quindi nelle due variabili troverai sempre le ultime due parole (quindi, così com'è, questo ciclo è inutile) ...
Il secondo ciclo è indipendente dal prim (anche se tu l'hai scritto come se uno dipendesse dall'altro) e inizia quando termina il primo
codice:
while(fgets(str2,MAXS,fpin)!=NULL )
sscanf(str2,"%s",nome);
e non fa altro che leggere tutto il file di input e mantenere nella variabile l'ultima parola (così com'è, anche questo ciclo è inutile) ...
A questo punto rimane, per ultimo, il codice
codice:
{
if(strcmp(eng,nome)==0)
{
fprintf(fpout,"%s\n",eng);
}
}
che viene eseguito indipendentemente dai cicli precedenti e una sola volta. Essendo eng e nome gli ultimi dati letti dai due cicli predenti, non verrà soddisfatta mai e mai verrà scritto sul file in output.
Devi rivedere tutto l'algoritmo che pensavi di adottare con quei cicli ... le correzioni non sono banali.