Passaggio per riferimento

Messaggioda SalvatCpo » 29/06/2018, 15:45

// 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 :)
SalvatCpo
Average Member
Average Member
 
Messaggio: 145 di 726
Iscritto il: 30/12/2017, 17:55

Re: Passaggio per riferimento

Messaggioda vict85 » 29/06/2018, 18:16

C'è un errore nel secondo scanf: hai scritto %s invece di %d.
vict85
Moderatore
Moderatore
 
Messaggio: 9319 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: Passaggio per riferimento

Messaggioda Quibyr » 30/06/2018, 06:01

ci sono 2 errori
Quibyr
Starting Member
Starting Member
 
Messaggio: 3 di 6
Iscritto il: 15/06/2018, 04:34

Re: Passaggio per riferimento

Messaggioda vict85 » 30/06/2018, 15:44

Quibyr ha scritto: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 a 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 system("PAUSE") è 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.
vict85
Moderatore
Moderatore
 
Messaggio: 9320 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite