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

Johnny Digital

[C] Ajuda: Structs e malloc (Resolvido)

5 mensagens neste tópico

boas

se tiver uma struct como a q se segue:


typedef struct {
        int n;
        HASH h[CAPACIDADE];
        long int p[CAPACIDADE];
} FOLHA;

para allocar memoria para a mesma, basta fazer:

FOLHA *F;
f = (FOLHA*)malloc (sizeof(FOLHA));

tá correcto ? :)

é q ao fazer operações com files como

fwrite (folha, sizeof(FOLHA), 1, f);

ou

fread (folha, sizeof(FOLHA), 1, f);

a estrutura vem corrompida  :down:

já me estou a passar uma beca... alguem me pode dar uma dica?

thanks ;)

joão

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O código que puseste aí está inconsistente, mas supondo que no fwrite e no fread folha é um apontador para FOLHA e f é um FILE, abriste f como ficheiro binário? Se não, não estou a ver problemas, só vendo o código que estás a usar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que te falta aí um &:

fwrite (&folha, sizeof(FOLHA), 1, f);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O código que puseste aí está inconsistente, mas supondo que no fwrite e no fread folha é um apontador para FOLHA e f é um FILE, abriste f como ficheiro binário? Se não, não estou a ver problemas, só vendo o código que estás a usar.

sim, folha é um apontador para FOLHA e o ficheiro foi aberto como binario...

Acho que te falta aí um &:

fwrite (&folha, sizeof(FOLHA), 1, f);

não falta pq folha é um apontador...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas...

já resolvi!

estava-me a esquecer do fflush (f) antes de guardar o file ;)

obrigado pela atenção :)

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