Stai usando male le scanf() e le fscanf().
Quando leggi una stringa non hai bisogno di anteporre l'operatore & alla variabile stringa, questo perché di per sé una variabile del genere è già un indirizzo. Inoltre elimina gli spazi nei codici di formato: perché scrivi "% s" e non semplicemente "%s" ad esempio? Anche il "\n" in quel modo nella scanf() non ha utilità.
Considera poi che, quando leggi i dati da file, ai parametri "dipendente.stipendio" e "dipendente.eta" devi anteporre la & perché devi passarne l'indirizzo (è esattamente l'errore opposto a quello che commetti altrove per le stringhe).
Riscriverei così (apportando le modifiche minime):
codice:
printf("Inserire nome del dipendente da cercare: ");
scanf("%s", nome1);
fscanf(p,"%s %s %d %d", dipendente.nome, dipendente.cognome, &dipendente.stipendio, &dipendente.eta);
while (!feof(p)) {
if (!strcmp(nome1,dipendente.nome)) {
printf("Il dipendente %s %s\n ha reddito di %d\n di eta' %d\n ", dipendente.nome, dipendente.cognome, dipendente.stipendio, dipendente.eta);
fscanf(p,"%s %s %d %d", dipendente.nome, dipendente.cognome, &dipendente.stipendio, &dipendente.eta);
}
fclose(p);
}
l'errore della & per le stringhe nelle scanf() è presente comunque anche altrove.