#11 Lenny
Předpokládám, že v C nevymysleli nějaké nové hranaté kolo a čtení ze souboru funguje "normálně", tzn, že fseek potřebuješ jen kdy chceš v souboru při čtení přeskakovat. Pokud ale chceš kontinuálně přečíst všechny údaje v souboru od začátku, o automatické posouvání v souboru je postaráno.
Přečtení hlavičky zrealizuj tak, že přečteš do nějakého bufferu všechny bajty hlavičky.
Předpokládám, že po otevření souboru hned první údaj v něm je hlavička. Takže rovnou čti například (pokud jsem to dobře spočítal, hlavička má 9 bajtů)
fread(buffer, 1, 9, f)
v bufferu tak budeš mít všechny bajty hlavičky - pokud ten buffer bude pole bajtů, v prvním máš hodnotu 9B, z druhého si bitovým posunem o 1 doprava vezmeš těch 7 bitů první údaj, bitovým součinem s 1 získáš hodnotu toho posledního bitu atd...
Ze třetího bajtu těch prvních pět bitů získáš zase bitovým posunem o tři doprava, zbývající tři bity získáš bitovým součinem s 7. Ten si uložíš do proměnné 32bit. Posuneš ji o tři bity doleva a bitově do ní přičteš hodnotu dalšího bajtu z bufferu, zase posuneš o osm bitů doleva, přičteš další atd atd.
Až zjistíš velikost dat, tak je přečteš, tím se automaticky přesune ukazatel v souboru na začátek další hlavičky a můžeš rovnou aplikovat předchozí postup.
Poud bys ale po otevření souboru chtěl přeskočit třeba na sedmý blok, to už tak snadné nebude a protože délka dat je proměnná, nelze rovnou skákat fseek. Pokud v hlavičce není uloženo nějaké pořadové číslo, nepůjde použít ani postupné přibližování, takže prostě budeš muset přečíst první hlavičku a fseek přeskočit data na začátek druhé hlavičky, tu přečíst a zase přeskočit až na tu sedmou...