//-------------------------------------------------------------------
//
// Um simples exemplo usando realloc ...
//
//-------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <malloc.h>
typedef struct Tdata Tdata;
struct Tdata {
char *nome;
int i; // qualquer valor se precisar ...
};
Tdata **pessoa;
int pessoa_len; // esse eh usado para marcar o tamanho de "realloc"
void novo_cadastro (char *nome, int i)
{
// nova array
//
pessoa = (Tdata**) realloc (pessoa, (pessoa_len+1) * sizeof (Tdata*));
// cria mais um tipo
//
Tdata *n = (Tdata*) malloc (sizeof(Tdata));
n->nome= strdup (nome);
n->i = i;
// coloca o tipo criado na array ( pessoa );
//
// ATENCAO: vc so deve incrementar ( pessoa_len ) aqui no final ...
//
pessoa [pessoa_len++] = n;
}
int main ()
{
int i;
novo_cadastro ("Joao", 100);
novo_cadastro ("Maria", 200);
novo_cadastro ("Antonio", 300);
novo_cadastro ("Jose", 400);
novo_cadastro ("Inacio", 500);
for (i=0; i < pessoa_len; i++)
printf ("nome: %s, %d\n", pessoa[i]->nome, pessoa[i]->i);
printf ("Programa terminado com sucesso ... \n");
return 0;
}