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

zephirus

Ler ficheiro binário

11 mensagens neste tópico

Boas,

Sou bastante noob nestas questões do C++. Peço desde já desculpa se a pergunta não fizer sentido mas gostava de saber como ler um ficheiro binário muito grande (formato double), e conseguir fazer o seu display.

Testei este código mas obtenho apenas zeros:

FILE * pFile;
  long lSize;
  double * buffer;
  size_t result;

  pFile = fopen("data.bin" ,"rb");
  if (pFile==NULL) {fputs ("File error",stderr); exit (1);}


   //obtain file size:
  fseek (pFile , 0 , SEEK_END);
  lSize = ftell (pFile);
  rewind (pFile);

   /*allocate memory to contain the whole file:*/

  buffer = (double*) malloc (sizeof(double)*lSize);
  if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}

int i,rc;
  for (i = 0; (rc = getc(pFile)) != EOF && i < 5; buffer[i++] = rc);
  fclose(pFile);
  if (i == 5) {
    puts("The bytes read were...");
    printf("%x %x %x %x %x\n", buffer[1000], buffer[1], buffer[2], buffer[340], buffer[4]);
  } else
    fputs("There was an error reading the file.\n", stderr);
  return EXIT_SUCCESS;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já reparaste nos warnings que dá?

teste.c: In function ‘main’:

teste.c:30: warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘double’

teste.c:30: warning: format ‘%x’ expects type ‘unsigned int’, but argument 3 has type ‘double’

teste.c:30: warning: format ‘%x’ expects type ‘unsigned int’, but argument 4 has type ‘double’

teste.c:30: warning: format ‘%x’ expects type ‘unsigned int’, but argument 5 has type ‘double’

teste.c:30: warning: format ‘%x’ expects type ‘unsigned int’, but argument 6 has type ‘double’

teste.c:9: warning: unused variable ‘result’

Depois estás ali a aceder ao buffer[1000] e buffer[340] quando só estás a colocar no buffer informação até ao índice 4 inclusivé.

Por último, isto de C++ tem pouco.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes indicar-me algum sitio em que tenha um exemplo daquilo que pretendo fazer?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é impressão minha ou aquilo é mais c do que c++? lolololololol :)

Bom, isso não ajuda nada. Eu disse no meu post que não estava muito dentro disto, aliás, esta questão foi-me pedida por uma pessoa que não podia no momento colocá-la aqui. Se alguém puder ajudar, óptimo, se for para fazer comentários vazios, escusam de escrever.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu de c++ tambem não sei muito...lolololol

Então porque é que vens para aqui mandar esses comentários. Não era melhor estares quieto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

vim aqui para oferecer os meus préstimos se precisares de trabalhar só em cC, não foi por mal... :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

vim aqui para oferecer os meus préstimos se precisares de trabalhar só em cC, não foi por mal... :)

Tem de ser em C++. Obrigado de qualquer forma.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

De nd se precisares em C, ja sabes não hesites em contactar.  :ipool:

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