FILE *fopen(const char *path, const char *mode); size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
xxd
nebo hexdump -C
.
test
, uložte ji do binárního souboru, binární soubor načtěte do struktury a její obsah vypište.
struct test { int ival; char cval; }; typedef struct test test_t;
test2
, do které uložíte i pointer na řetězec. Zamyslete se, jak správně uložit řetězec v položce .str
, jak ho správně načíst a jak rozlišit, zda .str
obsahuje NULL nebo odkaz na prázdný řetězec.
struct test2 { int ival; char cval; char *str; }; typedef struct test2 test2_t;
test
a test2
.
packed
? Jak se změní velikost struktury a proč? Musíte něco změnit ve vašem kódu? Jak ukládání a načítání naprogramovat, aby byl nezávislý na tomto atributu?
__attribute__((packed))
le_to_be()
, která převede integer z little endian na big endian. (Pro uint32_t budete potřebovat stdint.h
.)
uint32_t le_to_be(uint32_t v);
test
a test2
nezávisle na architektuře. Diskutujte limity vašeho řešení.
float
nezávisle na architektuře.
.left
a .right
?