Enviado em 24/03/2018 - 00:23h
Pessoal eu estou com um pouco de dificuldade para resolver este problema, sendo a descrição do problema é :
Escreva em programa em C que receba números inteiros do usuário indefinidamente. O programa finaliza quando o usuário entrar com o número 0.
a) Aloque, inicialmente, memória para 5 inteiros;
b) Caso o usuário entrar com mais inteiros, faça a realocação, alocando espaço para mais 5 inteiros e assim sucessivamente;
c) Quando o usuário digitar 0 devera imprimir os valores lidos, o índice e o endereço de memória.
O meu problema é que não estou conseguindo imprimir os valores lidos e eu digito alguns valores e da este erro "realloc(): invalid next size: 0x000055fc1e2ae260 ***".
O que eu posso mudar para ele funcionar?
Escreva em programa em C que receba números inteiros do usuário indefinidamente. O programa finaliza quando o usuário entrar com o número 0.
a) Aloque, inicialmente, memória para 5 inteiros;
b) Caso o usuário entrar com mais inteiros, faça a realocação, alocando espaço para mais 5 inteiros e assim sucessivamente;
c) Quando o usuário digitar 0 devera imprimir os valores lidos, o índice e o endereço de memória.
O meu problema é que não estou conseguindo imprimir os valores lidos e eu digito alguns valores e da este erro "realloc(): invalid next size: 0x000055fc1e2ae260 ***".
O que eu posso mudar para ele funcionar?
#include <stdio.h>
#include <stdlib.h>
int main(){
int j=5, *num, i=0, k=0;
num = (int *) malloc(5 * sizeof(int));
do {
printf("Digite um valor: ");
scanf("%d", (num+i));
if(k == j){
int *new = realloc(num, 5 * sizeof(int));
if(new){
num = new;
j += 5;
} else{
printf("Memória insuficiente\n");
}
}
k++;//incrementa k para comparar com j
i++;
//printf("Valor: %d\n", *num+i);
} while (*num+i !=0);
for(i = 0; i < k; i++){
printf("Valor: %d\n", *num+i);
printf("indice: %d\n", i);
printf("endereço de memória: %p\n", num+i);
}
free(num);
}