Avatar billede slinky Nybegynder
03. oktober 2006 - 01:32 Der er 7 kommentarer

læs binær fil i c

Hej!

når jeg prøver at læse en binær fil i c, med fgets får jeg blot underlige tegn?? why ?
Avatar billede bertelbrander Praktikant
03. oktober 2006 - 01:35 #1
Fordi fgets er til strenge, dvs. ascii tegn.
Til binære filer kan du bruge fread.
Avatar billede slinky Nybegynder
03. oktober 2006 - 01:45 #2
har jeg også rodet med... kan du ikke smide et stykke kode der læser fx de første 100 tegn fra en binær fil?
Avatar billede bertelbrander Praktikant
03. oktober 2006 - 02:00 #3
Filen der læses fra er første argument til programmet.

#include <stdio.h>
#include <ctype.h>

int main(int argc, char *argv[])
{
  FILE *f = fopen(argv[1], "rb");
  unsigned char Buffer[100];
  int i;
  if(!f)
  {
      printf("Failed to open: %s\n", argv[1]);
      return 1;
  }
  fread(Buffer, 1, 100, f);
  fclose(f);
  for(i = 0; i < 100; i++)
      printf("%u - %c\n", Buffer[i], isprint(Buffer[i]) ? Buffer[i] : '.');
  return 0;
}
Avatar billede slinky Nybegynder
03. oktober 2006 - 02:06 #4
afvikler programmet i eclipse,hvis filen hedder hat hvad gør jeg så??

smid et svar... jeg stener meget
Avatar billede bertelbrander Praktikant
03. oktober 2006 - 02:13 #5
Jeg kender ikke eclipse.

Du kan prøve med denne version der vil forsøge at åbne test.dat:
#include <stdio.h>
#include <ctype.h>

int main(int argc, char *argv[])
{
  FILE *f = fopen("test.dat", "rb");
  unsigned char Buffer[100];
  int i;
  if(!f)
  {
      printf("Failed to open: test.dat\n");
      return 1;
  }
  fread(Buffer, 1, 100, f);
  fclose(f);
  for(i = 0; i < 100; i++)
      printf("%u - %c\n", Buffer[i], isprint(Buffer[i]) ? Buffer[i] : '.');
  getchar();
  return 0;
}
Avatar billede slinky Nybegynder
03. oktober 2006 - 02:18 #6
yes sir... så kører bussen. Er MEGET grøn indenfor c, så hvad printer for løkken helt præcis?

tak tak
Avatar billede bertelbrander Praktikant
03. oktober 2006 - 02:23 #7
Det første tal på hver linie er talværdien for en byte.
Derefter skrives byten som en karakter, hvis det er en gyldig karakter, ellers .
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester