包含hdf5头文件
#include "hdf5.h"
有关hdf5文件在vs中的配置请参考:安装HDF5及在VS下配置HDF5 - 心媛意码 - 博客园
1.打开文件
hid_t file_id;
file_id = H5Fopen("文件路径", H5F_ACC_RDONLY, H5P_DEFAULT);
2.对未知文件要遍历H5文件结构,查看文件有那些dataset
herr_t status;
status = H5Ovisit(file_id, H5_INDEX_NAME, H5_ITER_NATIVE, op_func, NULL, H5O_INFO_ALL);
herr_t op_func(hid_t loc_id, const char* name, const H5O_info_t* info,void*operator_data)
{
printf("/");
if (name[0] == '.')
printf(" (Group)n");
else
switch (info->type) {
case H5O_TYPE_GROUP:
printf("%s (Group)n", name);
break;
case H5O_TYPE_DATASET:
printf("%s (Dataset)n", name);
break;
case H5O_TYPE_NAMED_DATATYPE:
printf("%s (Datatype)n", name);
break;
default:
printf("%s (Unknown)n", name);
}
return 0;
}
3.打开数据集dataset
hid_t dataset_id; dataset_id = H5Dopen(file_id, "dataset", H5P_DEFAULT);
4.查看数据集dataset中数据的类型以及元数据的字节大小
hid_t dtype; int len; dtype = H5Dget_type(dataset_id); len = H5Tget_size(dtype);
5.查看数据集dataset维度,以及每个维度的大小
int dims[]; int ndims; hid_t space = H5Dget_space(dataset_id); ndims = H5Sget_simple_extent_dims(space, dims, maxdims);
6.读取数据
char* data = (char*)malloc(sizeof(char) *dims[0]*dims[1]*...dims[ndims-1]);//根据数据类型分配相应的空间 status = H5Dread(dataset_id, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);



