Ah, ora diventerò insegnante di un'intera classe
<pre id=code><font face=courier size= id=code>
/*
Programma per la creazione di una Rubrica telefonica
*/
#include <stdio.h>
{
typedef struct
{
char Via [30];
char Citta[30];
char Stato[30];
char NCivico[5];
int Cap;
} Indirizzo;
typedef struct
{
int TelefonoCasa;
int Cellulare;
char Email[30];
int TelefonoUfficio;
} Reperibilita;
typedef struct
{
char Nome[30];
char Cognome[30];
char CodFiscale[16];
} Persona;
}
int main(int argc, char* argv[])
{
Persona Pers1, Pers2, Pers3, Pers4;
{
printf ("Inserisci Nome\n");
scanf ("%s", &Persona.Nome);
printf ("Inserisci Cognome\n");
scanf ("%s", &Persona.Cognome);
printf(Inserisci CodFiscale\n")
scanf ("%s", %Persona.CodFiscale);
printf ("Inserisci Via\n");
scanf ("%s", &Indirizzo.Via);
printf ("Inserisci Citta\n");
scanf ("%s", &Indirizzo.Citta);
}
if(Reperibilità.TelefonoUfficio == Reperibilità.TelefonoCasa)
printf ("Ufficio == Casa\n");
else
printf ("Ufficio != Casa\n");
return 0;
}
</font id=code></pre id=code>
Di per sé, questo esempio è andato molto meglio. Ho applicato qualche modifica, che soltanto l'occhio d'acquila riesce a percepire...
Esempio:
int main(int argc, char* argv[])
---
<pre id=code><font face=courier size= id=code>
#include <stdio.h>
{
typedef struct
...
</font id=code></pre id=code>
In questo pezzetto di codeice si vede che lavorate assieme
Dunque, il problema è, che iniziando a livello modulo, dopo l'include, con le parentesi graffe, si apre una sezione privata, ed è stata chiusa correttamente prima di main(). Però, main() non "vede" le strutture, perché sono private a una sezione di cui non si sa che fine farà... Si chiama "codice morto", codice che non sarà mai eseguito, e forse neanche compilato. Quindi c'è da togliere "{" e "}" attorno a quel blocco (dopo include e prima di main().
<pre id=code><font face=courier size= id=code>
int main(int argc, char* argv[])
{
Persona Pers1, Pers2, Pers3, Pers4;
...
</font id=code></pre id=code>
Dichiara le persone Pers1-4, ma non ne fai uso. Invece, ti riferisci direttamente a Persona, che è però il nome del tipo, e non la persona. Quindi:
<pre id=code><font face=courier size= id=code>
printf ("Inserisci Nome\n");
scanf ("%s", &Pers1.Nome);
</font id=code></pre id=code>
sarebbe più adeguato, sempre che vuoi riempire la struttura "Pers1". Questo vale anche Indirizzo, manca inoltre la sua dichiarazione.
<pre id=code><font face=courier size= id=code>
scanf ("%c", ...);
</font id=code></pre id=code>
è potenzialmente corretto, ma si riferisce a un solo carattere. "%s" mostra tutta la stringa.
<pre id=code><font face=courier size= id=code>
{
printf ("Inserisci Nome\n");
scanf ("%s", &Persona.Nome);
printf ("Inserisci Cognome\n");
scanf ("%s", &Persona.Cognome);
printf(Inserisci CodFiscale\n")
scanf ("%s", %Persona.CodFiscale);
printf ("Inserisci Via\n");
scanf ("%s", &Indirizzo.Via);
printf ("Inserisci Citta\n");
scanf ("%s", &Indirizzo.Citta);
}
</font id=code></pre id=code>
Non ho capito bene perché ci metti anche lì le parentesi graffe. Comunque, essendo all'interno di main() sarà eseguito correttamente.
PS: se apri una nuova discussione, facciamo meno confusione, hm?
Giovanni
---
http://www.y2ksw.com/vbulletin