Ir para conteúdo
Fórum Script Brasil
  • 0

escrever em arquivo binário


gabrieldestro

Pergunta

Olá a todos,

Preciso escrever em um arquivo binário, no entanto, estou incerto quanto a formatação.

Preciso escrever um registro de nome jogador[], contendo um numero variável de jogadores determinado pela variável nJogadoresBin.

Esse registro contém uma string, com o nome do jogador e seis inteiros correspondentes a 6 notas.

Preciso que o arquivo de saída tenha o formato do seguinte exemplo:

3

NomeA 0 0 0 0 0 0
NomeB 1 1 1 1 1 1
NomeC 2 2 2 2 2 2

Sendo 3, o valor de nJogadoresBin. Os Nomes, as strings. E os numeros, as notas de cada jogador.

A minha dúvida é em relação a formatação, como é um arquivo binário, não consigo checar pessoalmente o conteúdo, testei de duas formas, mas nenhuma funciona, como posso alterá-las?

fwrite(&nJogadoresBin, sizeof(int), 1, arqout);
fwrite(&jogador[0], sizeof(Jogador), nJogadoresBin, arqout);
fwrite(&nJogadoresBin, sizeof(int), 1, arqout);
fwrite("\n", sizeof(char), 1, arqout);
for (i = 0; i < nJogadoresBin; i++) { 
    fwrite(&jogador[i], sizeof(Jogador), 1, arqout);
    fwrite("\n", sizeof(char), 1, arqout);
}

Devo considerar a quebra de linhas como na segunda alternativa, ou não? Ou ainda, esta parte está correta e o erro está em outra? Existe alguma forma de visualizar o conteúdo do arquivo de forma fácil?

Obrigado.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

si usar un editor hexadecimal é possível ver o conteúdo da estrutura. Porem devemos ter em conta o alinhamento de bytes para essa tarefa já que vejo que envias a estrutura do tamanho de sizeof(suaEstrutura) . Isso pode ser complicado de entender si não sabe o que é o alinhamento de bytes em C/C++, busque informação sobre isso no google.

Outra coisa a ter em mente é que não podemos quebrar nada em um arquivo binário porque ele é lineal, não se pode fazer:

3

NomeA 0 0 0 0 0 0
NomeB 1 1 1 1 1 1
NomeC 2 2 2 2 2 2

Ele é:

3NomeA 0 0 0 0 0 0NomeB 1 1 1 1 1 1NomeC 2 2 2 2 2 2-1 //<- O -1 é o EOF
Editado por vangodp
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...