Derzeit speichere und lade ich einige Daten in C/C++-Strukturen in Dateien mit fread()/fwrite(). Das funktioniert ganz gut, wenn ich innerhalb dieser einen C-Anwendung arbeite (ich kann neu kompilieren, wenn sich die Struktur ändert, um die sizeof()-Argumente für fread()/fwrite() zu aktualisieren), aber wie kann ich diese Datei in anderen Programmen laden, ohne im Voraus die sizeof()s der C-Struktur zu kennen?
Insbesondere habe ich diese andere Java-Anwendung geschrieben, die die Daten in dieser C-Struktur-Binärdatei enthält visualisiert, aber ich möchte eine allgemeine Lösung, wie diese Binärdatei zu lesen. (Anstatt dass ich die sizeof()s in den Java-App-Quellcode manuell eingeben muss, wenn sich die C-Struktur ändert...)
Ich denke an die Serialisierung zu Text oder XML einer Art, aber ich bin nicht sicher, wo mit, dass zu beginnen (wie in C serialisieren, dann wie in Java und möglicherweise andere Sprachen in der Zukunft deserialize), und wenn das hier ratsam ist, wo ein Mitglied der Struktur ein Float-Array ist, die nach oben von ~50 MB im Binärformat gehen kann (und ich habe Hunderte von diesen Datendateien zu lesen und zu schreiben).
Die C-Struktur ist einfach (keine strenge Verschachtelung oder Zeigerreferenzen) und sieht wie folgt aus:
struct MyStructure {
char *title;
int id;
int param1;
int param2;
float *data;
}
Der Teil, der sich am meisten ändern kann, sind die Parameter-Integer.
Welche Möglichkeiten habe ich hier?