Quote:
Originariamente inviato da marko.fatto
perchè partName è già un puntatore a carattere (al primo di 25)
|
Ok, grazie.
Vorrei aggiungere un po' di domande, ammetto che sto trovando l'argomento strutture un po' complicato.
Sto cercando di realizzare un programma (ancora incompleto) che mi archivi i dati di 5 persone, cioè nome cognome ed età:
Codice:
//Gestione di un archivio di persone
#include <stdio.h>
struct persona {
char *nome[5];
char *cognome[5];
int *eta[5];
};
typedef struct persona Persona;
struct persona dati[5];
void chiediDati (Persona *);
main()
{
char pause;
int i;
printf ("Verranno ora richiesti i dati anagrafici relativi a 5 persone\n\n");
for (i = 0 ; i <= (5 - 1) ; i++) {
printf ("Inserire nome\n");
scanf ("%s", (*dati).nome);
printf ("Inserire cognome\n");
scanf ("%s", (*dati).cognome);
printf ("Inserire eta'\n");
scanf ("%d", &(*dati).eta);
}
for (i = 0 ; i <= (5 - 1) ; i++) {
printf ("Dipendente %d", i);
printf ("Nome: %s",(*dati).nome );
printf ("Cognome: %s",(*dati).cognome);
printf ("Eta': %d", (*dati).eta);
}
printf ("Inserire una lettera per terminare");
scanf ("%c", &pause);
return 0;
Ma qui ho veramente tanti dubbi;
1) La struttura: al suo interno compaiono due vettore di 5 puntatori a carattere che mi servono per nome e cognome ed un vettore di 5 puntatori a numero per l'età: è corretto?
2) Il primo ciclo for: funziona correttamente, ma per puro caso, in quanto ho dovuto introdurre quegli asterischi nelle scanf, andando contro ciò che mi sembrava di aver capito dalla teoria: mi potreste spiegare a cosa servono e se si può avere un'altra forma che non ne faccia uso?
3) Il secondo ciclo for: non funziona e non ho idea sul come farlo funzionare. Se uso la forma del tipo
Codice:
printf ("Nome: %s", dati.nome );
printf ("Cognome: %s",dati.cognome);
printf ("Eta': %d", dati.eta);
senza parentesi ed asterischi ho un errore di questo tipo:
request for member `nome' in `dati', which is of non-aggregate type `persona[5]'
Ditemi voi, la confusione è abbastanza.