View Single Post
Old 30-08-2008, 23:47   #7
Composition86
Senior Member
 
L'Avatar di Composition86
 
Iscritto dal: Jul 2005
Messaggi: 406
Quote:
Originariamente inviato da marko.fatto Guarda i messaggi
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.
Composition86 è offline   Rispondi citando il messaggio o parte di esso