Io non devo fare nulla di particolare. Cerco di capire come funziona il
malloc e realloc. Sono partito dal codice riportato sotto.
Ora lo voglio modificare. Anzichè ingressare i numeri, voglio utilizzare
la struct:
typedef struct
{
char nome[nLMAX];
char cognome[cLMAX];
} dati;
dati *impiegato;
e alla fine, dopo aver inserito una serie di nome e cognome, stampare
tutto ..
Ciao
#include <stdio.h>
#include <stdlib.h>
int main()
{
int nb;
int i=0;
int n=0;
int ingresso;
int *array;
int allocati;/* byte allocati */
int dimbloc;/* byte in un blocco */
int dimint;/* byte in un intero */
int usati;/* byte contenenti interi */
nb = 1;
dimint = sizeof(int);
dimbloc = nb * dimint;
usati = 0;
array = (int *)malloc(dimbloc);
if(array == NULL)
{
printf("Memoria insufficiente\n");
exit(1);
}
allocati = dimbloc;
printf("Inserisci i numeri-Un carattere per uscire.\n");
while(ingresso!=0)
{
scanf("%d", &ingresso);
usati += dimint;
if(usati>allocati)
{
allocati += dimbloc;
array = (int *)realloc(array, allocati);
if(array == NULL)
{
printf("Memoria insufficiente\n");
exit(1);
}
i++;
}
/* in questo modo vengono letti n interi */
array[n++] = ingresso;
}
/* stampo tutti i numeri digitati e relativo indirizzo di memoria */
printf("\n NUMERO INDIRIZZO\n");
for (i = 0; i < n; i++)
{
printf("%5d", array[i]); // visualizzo i numeri memorizzati
nel vettore
printf("%15p\n", &array[i]); // visualizzo l'indirizzo dei
numeri memorizzati nel vettore
}
free(array); // libero la memoria allocata
printf("\n");
return 0;
}