Ir ao conteúdo

C Problemas com Realloc Em C


Ir à solução Resolvido por Flávio Pedroza,

Posts recomendados

Postado

Estou com problemas utilizando o realloc, quando eu aloco a primeira vez dá tudo certo, ele salva corretamente, porém quando eu utilizo o realloc as informações se "perdem", ou quando tento altera-las há um "estouro de memória".
 

int cadastro(produtos *dados, int quantidade_produtos){
    system("cls");
    int aux;
    emoldurar("Cadastro");
    printf("Produto: ");
    fflush(stdin); gets(dados[quantidade_produtos].nome_produto);
    printf("Cod produto: ");
    fflush(stdin); scanf("%d", &dados[quantidade_produtos].cod_produto);
    for(int i = 0; i <= quantidade_produtos; i++)
    {
        if(dados[i].cod_produto == dados[quantidade_produtos].cod_produto && i != quantidade_produtos){
            printf("Cod em uso. Tente novamente.\nCod produto: ");
            scanf("%d", &dados[quantidade_produtos].cod_produto);
            i = -1;
        }
    }
    printf("Preco: ");
    fflush(stdin); scanf("%f", &dados[quantidade_produtos].preco_produto);
    printf("Quantidade: ");
    fflush(stdin); scanf("%d", &dados[quantidade_produtos].quantidade);
    printf("Produto cadastrado com sucesso!\n", quantidade_produtos);
    system("pause");

    quantidade_produtos++;
    aux = quantidade_produtos + 2;
    dados = realloc(dados, aux * sizeof(produtos));
    return quantidade_produtos;
}

a função recebe um ponteiro de uma struct e a quantidade_produtos inicialmente é 0.

  • Solução
Postado
int cadastro(produtos **dados, int quantidade_produtos){
	(...)
	*dados = (produtos *)realloc(*dados, aux * sizeof(produtos));
	(...)
}

Acredito que o certo seria assim. Para chamar a função:

cadastro(&dados, quantidade_produtos)

 

Postado

Funcionou perfeitamente! Muito obrigada!

52 minutos atrás, Flávio Pedroza disse:

int cadastro(produtos **dados, int quantidade_produtos){
	(...)
	*dados = (produtos *)realloc(*dados, aux * sizeof(produtos));
	(...)
}

Acredito que o certo seria assim. Para chamar a função:


cadastro(&dados, quantidade_produtos)

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!