Parto dal fatto che stai sbagliando a dichiarare la struttura.
Quello che andrebbe fatto è considerare una sola occorrenza dei dati che contiene.
( anche perchè per la variabile 'altezza' ci sarebbero dei problemi non essendo costruita come le altre... anche se tutte e tre così non vanno bene)
In C non esiste il concetto di stringa, per questo devi usare un array di caratteri.
Per questo motivo, si può evitare di creare un array per il sesso e dichiarare semplicemente la variabile come char.
Ora hai una struttura che rappresenta una persona.
Quello che dovresti fare adesso è allocare lo spazio di questa struttura per quante persone hai intenzione di registrare.
Tramite prompt chiedi il numero di persone da memorizzare e poi allochi sufficiente spazio in memoria per poterle salvare tutte.
Adesso ti trovi nella situazione in cui hai:
- la rappresentazione di una persona ( la struttura )
- il numero totale di persone da dover gestire
- la giusta quantità di memoria allocata su cui poter lavorare
Non resta altro da fare che chiedere man mano i dati delle persone e salvarli
Non ho avuto modo di provare il codice, mi scuso in anticipo per eventuali errori.
Comunque il flusso da utilizzare è questo ( a meno che qualcuno non abbia una soluzione più elegante )
Quello che andrebbe fatto è considerare una sola occorrenza dei dati che contiene.
( anche perchè per la variabile 'altezza' ci sarebbero dei problemi non essendo costruita come le altre... anche se tutte e tre così non vanno bene)
C:
#define STRING = 10;
typedef struct{
char name[STRING];
char sex;
float altezza;
} persona;
Per questo motivo, si può evitare di creare un array per il sesso e dichiarare semplicemente la variabile come char.
Ora hai una struttura che rappresenta una persona.
Quello che dovresti fare adesso è allocare lo spazio di questa struttura per quante persone hai intenzione di registrare.
Tramite prompt chiedi il numero di persone da memorizzare e poi allochi sufficiente spazio in memoria per poterle salvare tutte.
C:
persona *people = malloc( numPersone * sizeof(persona) );
- la rappresentazione di una persona ( la struttura )
- il numero totale di persone da dover gestire
- la giusta quantità di memoria allocata su cui poter lavorare
Non resta altro da fare che chiedere man mano i dati delle persone e salvarli
C:
for( i = 0; i < numPersone; i++ ){
printf("Inserisci il nome della persona\n")
scanf("%s", people[i].name)
printf("Inserisci il sesso della persona\n")
scanf("%c", people[i].sex)
printf("Inserisci l'altezza della persona\n")
scanf("%f", people[i].altezza)
}
Non ho avuto modo di provare il codice, mi scuso in anticipo per eventuali errori.
Comunque il flusso da utilizzare è questo ( a meno che qualcuno non abbia una soluzione più elegante )