10: Allocazione dinamica della memoria Vers. 9.1 – Ottobre 2025
// Utilizzando il linguaggio C – ARRAY _ Record _ Dinamico
# include < stdio. h > # include < stdlib. h > # include < string. h >
typedef struct { char Cognome [ MAXNUMCHAR + 1 ]; char Nome [ MAXNUMCHAR + 1 ]; int Maglia; } Calciatore;
int main( int argc, char * argv []) { Calciatore * p; int i, n;
/* Check sul numero di elementi possibili dell ' array dinamico di RECORD */ /* VERA DINAMICITA ': unico limite la quantità di memoria assegnata al TASK */ do { printf(" Inserire dimensione array record dinamico: "); fflush( stdin); scanf("% d ", & n); } while( n <= 0);
/* ALLOCAZIONE DINAMICA dell’ ARRAY di record nello heap */ p =( Calciatore *) malloc( n * sizeof( Calciatore));
if( p!= NULL) { /* Caricamento e controllo campi dell ' array di record */ for( i = 0; i < n; i ++) {
do { printf(" Cognome = "); fflush( stdin); gets(( p + i)- > Cognome); } while(( strlen(( p + i)- > Cognome) == 0) ||( strlen(( p + i)- > Cognome) > 30));
do { printf(" Nome = "); fflush( stdin); gets(( p + i)- > Nome); } while(( strlen(( p + i)- > Nome) == 0) ||( strlen(( p + i)- > Nome) > 30));
do { printf(" Maglia = "); fflush( stdin); scanf("% d ",&(( p + i)- > Maglia)); } while((( p + i)- > Maglia < 1) ||(( p + i)- > Maglia > 99)); }
Autore: Rio Chierego( email: riochierego @ libero. it- sito web: www. riochierego. it) Pag. 25