So habe ich eine hdf5-Datei, die einen Datensatz enthält:Wie H5T_STRING von hdf5 lesen C mit
DATASET "updateDateTime" {DATATYPE H5T_STRING{
STRSIZE 24;
STRPAD H5T_STR_NULLPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE{ (5)/(5) }
DATA{
(0) : "2015-05-12\000\000\000\000\000\000\000\000\000\000\000\000\000\000",
(1) : "2015-05-13\000\000\000\000\000\000\000\000\000\000\000\000\000\000",
(2) : "2015-05-14\000\000\000\000\000\000\000\000\000\000\000\000\000\000",
(3) : "2015-05-15\000\000\000\000\000\000\000\000\000\000\000\000\000\000",
(4) : "2015-05-16\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
}
ich diesen Datensatz mit C lesen will, aber ich kann ein gutes Beispiel nicht finden (ich bin neu zu HDF5). Insbesondere kann ich nicht herausfinden, welches H5T_NATIVE_ * beim Lesen verwendet werden soll. Hier ist der Code, den ich jetzt habe:
hid_t time_ds = H5Dopen(grp, "updateDateTime", H5P_DEFAULT);
auto time_shape = get_dataset_shape(time_ds);
char** time_str = (char **)malloc(time_shape[0] * sizeof(char *)); // TODO: memeory allocation correct??
status = H5Dread(time_ds, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT,
time_str);
/*do my stuff*/
free(time_str);
status = H5Dclose(time_ds);
Und was passiert, wenn Sie diesen Code ausführen: speichert mehr als eine Zeichenfolge (die oben durch einen Blick auf das Ergebnis der h5dump geschrieben zu sein, Ihr Fall scheint), können Sie diese durch Looping die Ergebnismenge abrufen? – arboreal84
Nun, time_str ist nicht gefüllt mit Daten nach H5Dread() @ arboreal84 –