4° Anno TEORIA 2. Allocazione dinamica della memoria | Page 25

10 : Allocazione dinamica della memoria Vers . 8.3 – Ottobre 2023
// Utilizzando il linguaggio C – ARRAY _ Record _ Dinamico # include < stdio . h > # include < stdlib . h > # include < string . h >
# define MAXNUMCHAR 30 # define MINNUMMAGLIA 99 # define MAXNUMMAGLIA 99
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 ) > MAXNUMCHAR ) );
do { printf (" Nome = "); fflush ( stdin ); gets (( p + i ) - > Nome ); } while ( ( strlen (( p + i ) - > Nome ) == 0 ) || ( strlen (( p + i ) - > Nome ) > MAXNUMCHAR ) );
do { printf (" Maglia = "); fflush ( stdin ); scanf ("% d ",&(( p + i ) - > Maglia ) ); } while ( (( p + i ) - > Maglia < MINNUMMAGLIA ) || (( p + i ) - > Maglia > MAXNUMMAGLIA ) ); }
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 25