• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fonseca

Realloc

8 mensagens neste tópico

tenho uma pequena duvida na função realloc...

Isto é o seguinte eu tenho uma matriz com uma linha para 20 caracterse([1][20])

e quero ao longo do programa, acrescentar mais uma linha á matriz com o exacto numero de caracteres.([1+1][20])

Para tal, vou usar a função realloc, no entanto estou a ter dificuldades em perceber, a sintaxe da função bem como o modo como vou fazer isto.

Se puderem pelo menos pôr um exemplo com a sintaxe necessária para a implementação desta função, agradecia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes de mais o realloc só funciona para elementos criados com o malloc ou calloc.

a sintaxe é a seguinte:

ponteiro_para_algo = realloc(ponteiro_original, tamanho_que_queres_definir);

no caso do tamanho podes utilizar a função

sizeof(tipo_de_dados)

para devolver o tamanho do tipo de dados que queres, depois é só multiplicar pelo numero de elementos que queres.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok!ntão neste caso após faxer o

tipo

ap=(char*)malloc(sizeof(char)*20);   

para alocar um vector de 20 char

e dps faxo ap=(char*)realloc(ap,2*sizeof(char*20));

é lógico k tá mal o k acabei de dixer

mas por favor alguem corrije...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok!ntão neste caso após faxer o

tipo

ap=(char*)malloc(sizeof(char)*20);   

para alocar um vector de 20 char

e dps faxo ap=(char*)realloc(ap,2*sizeof(char*20));

é lógico k tá mal o k acabei de dixer

mas por favor alguem corrije...

Não estás muito longe

ap=(char*)realloc(ap,2*(20*sizeof(char));

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

lol....mas o que querias fazer era uma matriz ajustavel portanto faz assim:

ap=(char*)realloc(muitos,muitos);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando queres usar uma matriz (array de strings) deves usar char** em vez de char*.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a calloc a única coisa que faz a mais que o malloc é colocar todos os bits a 0.

E não permite fazer o mesmo que o realloc.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora