[C] dubbio e problema con strutture
Buongiorno, ho iniziato l'approccio alle strutture in C. Ho scritto il seguente codice(banale) per annidare due strutture, o meglio includere una struttura in un'altra..ecco
1)il codice l'avevo scritto senza le operazioni di casting..ma durante la compilazione mi chiede di fare il casting con un intero, perchè?
2)Perche' non mi stampa correttamente il cognome? é una conseguenza del casting vero?
Grazie
#include <stdio.h> #include <stdlib.h> struct anagrafica{ char nome; char cognome; }; struct agenda{ struct anagrafica p1; struct anagrafica p2; }; int main(void) { struct agenda paziente; paziente.p1.nome=(int)"Topo"; paziente.p1.cognome=(int)"Gigio"; paziente.p2.nome=(int)"Remo"; paziente.p2.cognome=(int)"Labarca"; printf("Il paz.1 è Mr. %c\n",paziente.p2.cognome); }
1)il codice l'avevo scritto senza le operazioni di casting..ma durante la compilazione mi chiede di fare il casting con un intero, perchè?
2)Perche' non mi stampa correttamente il cognome? é una conseguenza del casting vero?
Grazie
Risposte
I problemi sono 3:
1) struct anagrafica contiene due char, quindi non due stringhe o due puntatori a char.
2) non è così che si copia una stringa in C, va a ripassarti questa parte.
3) per stampare stringhe con printf non usi %c.
Nota che, risolto il problema 1, potresti inizializzare paziente in un modo veloce usando
1) struct anagrafica contiene due char, quindi non due stringhe o due puntatori a char.
2) non è così che si copia una stringa in C, va a ripassarti questa parte.
3) per stampare stringhe con printf non usi %c.
Nota che, risolto il problema 1, potresti inizializzare paziente in un modo veloce usando
struct agenda paziente = {{"Topo", "Gigio"}, {"Remo", "Labarca"}};
che sciocchezza...ho dimenticato l'asterisco nella definizione dei campi di anagrafica....
per l'inizializzazione ho scelto quest'altra modalita' prevalentemente a scopo didattico, grazie per la disponibilità vict!
per l'inizializzazione ho scelto quest'altra modalita' prevalentemente a scopo didattico, grazie per la disponibilità vict!
