Passaggio per riferimento

SalvatCpo
// Scrivi una funzione che prende come argomento una struct (cognome, stipendio) e la modifica dimezzando lo stipendio.
struct dipendente{
char cognome[20];
int stipendio;
} a;
void funzione (dipendente *a);
int main()
{
dipendente b;
scanf ("%s", &b.cognome);
scanf ("%s", &b.stipendio);
funzione (&b);
printf ("%d\n", b.stipendio);
system ("PAUSE");
return 0;
}
void funzione (dipendente *a)
{
a->stipendio=a->stipendio/2;
}


Mi stampa un numero strano con tante cifre. Come mai non funziona? Grazie :)

Risposte
vict85
C'è un errore nel secondo scanf: hai scritto %s invece di %d.

Quibyr
ci sono 2 errori

vict85
"Quibyr":
ci sono 2 errori


Io ne conto 1, più molte cose che andrebbero cambiate. La cosa più stupida che andrebbe cambiata è che definisce una variabile globale di nome [inline]a[/inline] che non usa da nessuna parte e di cui non ha bisogno, ma ci sono molte altre cose. scanf andrebbe evitata ma posso chiudere un occhio su un programma giocattolo.

NOTA: La chiamata [inline]system("PAUSE")[/inline] è tra il ridicolo e l'inutile, ed è insegnata solo perché DEV-C++ è un IDE pessimo e datato che non usa più nessuno al di fuori dei corsi di informatica (non che sia mai stato molto usato da altri). Usane un altro.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.