/********************************************************************/ /* Create a dataset with a string in it. */ /********************************************************************/ #include #include #include #include "hdf5.h" #define FILE "crtstr.h5" main() { hid_t file_id, dataset_id, dataspace_id; /* identifiers */ hid_t dtype; herr_t status; char wbuf[25]; char rbuf[25]; hid_t atype; size_t size; hsize_t storage_size; file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); dataspace_id = H5Screate (H5S_SCALAR); atype = H5Tcopy (H5T_C_S1); size = 21; status = H5Tset_size (atype, size); strcpy (wbuf, "This is a test."); wbuf[20] = '\0'; dataset_id = H5Dcreate(file_id, "StrData", atype, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); status = H5Dwrite (dataset_id, atype, H5S_ALL, H5S_ALL, H5P_DEFAULT, wbuf); status = H5Dclose(dataset_id); dataset_id = H5Dopen2 (file_id, "StrData", H5P_DEFAULT); dtype = H5Dget_type (dataset_id); size = H5Tget_size (dtype); printf ("String size: %i\n", size); storage_size = H5Dget_storage_size (dataset_id); printf ("String storage size: %i\n", storage_size); status = H5Dread (dataset_id, atype, H5S_ALL, H5S_ALL, H5P_DEFAULT, rbuf); printf ("String Value: %s\n", rbuf); status = H5Dclose(dataset_id); status = H5Tclose (atype); status = H5Sclose(dataspace_id); status = H5Fclose(file_id); }