Czesć,
piszę sobie program w którym potrzebuję odczytać wcześniej zapisane dane - zapisuję je do pliku binarnie w ten sposób:
void write(unsigned char *c, const char *filepath, unsigned long long clen) {
FILE *fp;
fp = fopen(filepath, "wb");
if(fp)
fwrite(c, sizeof(unsigned char), clen, fp);
else
printf("Error: Can not write file!.\n");
fclose(fp);
}
hexdump tego pliku to:
0000000 d5c1 afbe 340b f64f d9cb 2c73 e422 5192
0000010 8d40 cada 0047
0000015
Odczytuję dane przy pomocy tej funkcji:
void read(unsigned char *c, const char *filepath, unsigned long long *clen) {
FILE *fp;
fp = fopen(filepath, "rb");
if(fp){
fseek(fp, 0L, SEEK_END);
*clen = ftell(fp);
*clen = *clen;
fseek(fp, 0L, SEEK_SET);
fread(c, sizeof(unsigned char), *clen, fp);
}
fclose(fp);
}
Tylko odczytanie danych w ten sposób nie jest poprawine - bajty są poprzestawiane, wypisałem sobie tę tablicę, wygląda tak:
I: 0 Val: c1
I: 1 Val: d5
I: 2 Val: be
I: 3 Val: af
I: 4 Val: b
I: 5 Val: 34
I: 6 Val: 4f
I: 7 Val: f6
I: 8 Val: cb
I: 9 Val: d9
I: 10 Val: 73
I: 11 Val: 2c
I: 12 Val: 22
I: 13 Val: e4
I: 14 Val: 92
I: 15 Val: 51
I: 16 Val: 40
I: 17 Val: 8d
I: 18 Val: da
I: 19 Val: ca
I: 20 Val: 47
Zastanawiam się jak to naprawić, a dane nie wychodzą poza ten sam system/komputer.