Stránka 1 z 1

Záznamy typu proměnných

Napsal: 29 led 2019 17:56
od mushkan
Snažím se převést záznamy o pevné délce různých datových typů a velikostí do jedné datové struktury v jazyce C. Přemýšlel jsem o použití struktur svazků, ale některé pole mohou mít délku až 50 znaků, takže spousta paměti by bylo zbytečné. Existuje lepší způsob ukládání těchto údajů?

Jako příklad:

20190128značka 24color 9 (int, 6 char, int, 6 char, int)

verylongname4520190128 (12 znaků, int, int)

jsou dva možné nahrávací formáty. Kdybych měl ukládat oba záznamy pomocí stejné struktury, jediná věc, na kterou momentálně můžu uvažovat, je použít spojení s char pole délky 13 a int pro všechny prvky tak, aby největší část dat lze uložit. To by vyhovovalo jakémukoli jinému záznamu za předpokladu, že řetězec s 12 znaky je největší proměnnou. Pro tento příklad by tato struktura měla být 5 z těchto svazků, takže mohl být uložen první záznam. To hodně odpadá, když ukládáte některý z rekordních formátů, takže to není tak skvělé řešení (imo).

Re: Záznamy typu proměnných

Napsal: 29 led 2019 19:53
od faraon
Co dát do té struktury ukazatel na pole znaků? Pak pro každý ten string alokuješ pouze potřebný počet bytů.
Nebo si alokovat velký blok paměti a do něj je ukládat stejným způsobem, tam bys teda musel provádět vlastní "správu paměti". Bylo by to sice pracnější, ale poběží to rychleji.