|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2006
Città: Napoli
Messaggi: 786
|
[C] Inserire stringa in un campo
Domanda banale, ma in C non mi viene e non capisco perchè.
In pratica devo soltanto inserire una stringa in un campo di una struct. Codice:
#define NMAX 30
typedef struct{
char nome[ NMAX ];
char cognome[ NMAX ];
int matricola;
}studente;
void leggiStruttura( studente s );
void stampaStruttura( studente s );
--------------------------------------------- Header ---
void leggiStruttura( studente s )
{
printf("Inserisci i dati dello studente:\n");
printf("Nome: ");
scanf( "%s", &s.nome );
printf("Cognome: ");
scanf( "%s", &s.cognome );
printf("Matricola: ");
scanf( "%d", &s.matricola );
}
void stampaStruttura( studente s )
{
printf("Stampo i dati dello studente:\n");
printf("Nome: ");
printf( "%s\n", &s.nome );
printf("Cognome: ");
printf( "%s\n", &s.cognome );
printf("Matricola: ");
printf( "%d\n", &s.matricola );
}
------------------------------ .c ---
#include "libretto20Esami.h"
int main(int argc, char *argv[])
{
studente mioStudente;
leggiStruttura( mioStudente );
stampaStruttura( mioStudente );
printf("\n\n");
system("PAUSE");
return 0;
}
Tnx.
__________________
Q9650@4140Mhz Voltaggi Feedback positivi ottenuti per vendite fatte a: Alfio89, Deskmat, Renato10, il mic, sosa, Emack - [ Lastre di Alluminio per modding computer ]
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 246
|
Dovresti utilizzare i puntatori per passare il parametro alla tua funzione leggiStruttura, altrimenti le modifiche che la funzione effettua sulla struttura non si ripercuotono sulla variabile passata (che è la semantica che intendi dare tu al codice) ma solo su una copia locale alla funzione, che viene distrutta alla fine della chiamata.
Per quanto riguarda la funzione stampaStruttura, non è strettamente necessario passare il puntatore a studente (anche se potrebbe valere la pena in qualche caso) perchè la funzione si limita a leggere e non modifica nessun campo della variabile... In soldoni, le due funzioni diventano così: Codice:
void leggiStruttura( studente* s );
void stampaStruttura( studente s );
void leggiStruttura( studente* s )
{
printf("Inserisci i dati dello studente:\n");
printf("Nome: ");
scanf( "%s", s->nome );
printf("Cognome: ");
scanf( "%s", s->cognome );
printf("Matricola: ");
scanf( "%d", &(s->matricola) );
}
void stampaStruttura( studente s )
{
printf("Stampo i dati dello studente:\n");
printf("Nome: ");
printf( "%s\n", s.nome );
printf("Cognome: ");
printf( "%s\n", s.cognome );
printf("Matricola: ");
printf( "%d\n", s.matricola );
}
Codice:
studente mioStudente;
leggiStruttura( &mioStudente );
stampaStruttura( mioStudente );
printf("\n\n");
system("PAUSE");
return 0;
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto. CONCLUSO POSITIVAMENTE CON: oldfield |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2006
Città: Napoli
Messaggi: 786
|
Grazie mille, funziona tutto!
__________________
Q9650@4140Mhz Voltaggi Feedback positivi ottenuti per vendite fatte a: Alfio89, Deskmat, Renato10, il mic, sosa, Emack - [ Lastre di Alluminio per modding computer ]
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:54.










Feedback positivi ottenuti per vendite fatte a: Alfio89, Deskmat, Renato10, il mic, sosa, Emack 









