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 ?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
03. oktober 2006 - 01:35
#1
Fordi fgets er til strenge, dvs. ascii tegn. Til binære filer kan du bruge fread.
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?
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; }
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
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; }
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
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 .
Kurser inden for grundlæggende programmering