[ create a new paste ] login | about

Link: http://codepad.org/9rLahJNA    [ raw code | fork ]

C, pasted on Mar 3:
//-------------------------------------------------------------------
//
// 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;
}


Create a new paste based on this one


Comments: