Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Filipecarvas@hotmail.com

Construir ficheiro binário em memória dinâmica

Mensagens Recomendadas

Filipecarvas@hotmail.com    0
Filipecarvas@hotmail.com

Boa noite!

Estou a desenvolver um programa em que leio um ficheiro .csv com o formato numero1,nome1,numero2,nome2 em que tenho de construir um ficheiro binário em memória dinâmica, antes de o escrever para disco. Alguém me pode dar uma luz de como isto se faz?

Muito obrigado :D

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1123
HappyHippyHippo

existe alguma razão especial para essa complicação toda ?

não basta guardar os dados em memória, trabala-los e depois guardar ?

necessita mesmo de ser binário ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1123
HappyHippyHippo

o problema será sempre saber que tipo de info está no ficheiro binário ...

podes sempre usar um modelo padronizado com flags:

- sempre que queres guardar uma string escreves em binário: "0string\0"

- sempre que queres guardar um valor númerico assumes ser sempre um double escrevendo em binário: "1valor"

- para mudar de registo escreves o valor '\n'

desta forma podes voltar a ler o ficheiro sem problemas porque sabes sempre o que fazer ...

porque se les um 0 ... a seguir vem uma string, caso for um 1, virá um double

tem somente o problema de gerir a memória dinâmica com realloc's ou outro tipo de "allocação" de memória para depois despejar no ficheiro

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Flinger    50
Flinger
em que tenho de construir um ficheiro binário em memória dinâmica

Não faz lá muito sentido...

Mas básicamente o que tens de fazer é o parse do teu CSV, contruindo um array ou lista ligada de estruturas, dependendo do que queiras. Depois é só usar fopen() para abrir o ficheiro, fwrite(), para escreveres elemento a elemento, e fclose no fim.

E voilá está gravado o ficheiro binário. Para garantir isso só precisas usar o "wb" no modo, no fopen, por questões de compatibilidade.

Se quiseres ler o ficheiro binário, fopen(), e depois lês elemento a elemento (o tamanho da tua estrutura bytes),  com o fread().

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade