Doufám tedy že ti to dělá, co chceš, protože
... chová se to tak, že když zapisuji např. dvě čísla v hex je to 78 a 64 tak hex editor to zobrazuje jako 7800 6400 .
... Tudíž když posouvám fseek po jednom a pak zapisuji výsledek by měl být dva bajty např "FFFF" a ne "FF00 FF00".
Jenže v tom kódu seekuješ o 2 bajty, ne o jeden...
Když např. přidáš 1.120.100.60 do prázdného souboru, prvních 8 bajtů bude
78 00 64 00 00 00 00 00seekuješ to o
2 bajty, viz úryvek tvého kódu, co jsem vložil do minulé odpovědi.
Když potom přidáš třeba 1.14.205.60, tak to bude
78 0E 64 CD 00 00 00 00protože první bajt testuješ na \x00 a přesuneš se v cyklu o bajt dál.
Když dál přidáš třeba opět 1.120.100.60, tak vyjde
78 0E 64 CD 78 00 64 00Další věc je, že to takhle hledá konec dat po 1 bajtů (vždy fseek a fread), což asi moc efektivní nebude a další věc že se ti při různých příležitostech budou přepisovat data:
Nejvýznamnější bajt v IP ti určuje offset * 250. Ale do těch 250 bajtů zapisuješ druhý i třetí bajt IP adresy. Takže rozsah adres 2.x.x.x ti bude přepisovat druhou polovinu záznamů pro rozsah 1.x.x.x. Navíc ve smyčce hledáš konec data testováním na hodnotu \x00; co když bude IP adresa x.0.x.x nebo x.x.0.x ? Přijdeš o její záznam.
Já když jsem to viděl, tak jsem ihned vzdal snahu porozumět tomu, v sítích se nijak nevyznám, myslel jsem si kdovíjakou magii neprovádíš a že to je nad moje schopnosti / čas. Teď si nejsem jist, když tě mate to posunování o bajt.
Možná jsi to už úplně přepracoval.... tak snad ti to funguje jak očekáváš.
K té metodě reset() jsem chtěl celou dobu říct jen to, že je buď chybně pojmenovaná nebo nedělá co má. Na funkčnost nemá vliv, ale až zapomeneš na implementační detaily, můžeš nasekat chyby tím, že budeš předpokládat že metoda reset() "resetuje" výstupní soubor a ona přitom zatím jen vytvoří nový soubor, pokud dosud neexistuje. Pokud existuje, nijak se ho nedotkne, takže jakýpak reset? Buď bych ji přejmenoval třeba na init() nebo v ní vytvářej soubor vždy (mód "wb") - existenci souboru stejně kontroluješ mimo ní a voláš ji jen když neexistuje.