如何使用Fortran API将字符串数组写入HDF5数据集?

如何使用Fortran API将字符串数组写入HDF5数据集?,fortran,hdf5,Fortran,Hdf5,使用fortran语言定义字符串数组: character(len = 20), dimension(5) :: strings = (/"hello", "world", "Hello", "HDF5", "fortran"/) 现在,我想使用HDF5 API参考文档所示的h5ltmake_dataset_string_f接口将此数组保存到数据集中 Fortran90接口:h5ltmake\u

使用fortran语言定义字符串数组:

character(len = 20), dimension(5) :: strings = (/"hello", "world", "Hello", "HDF5", "fortran"/)
现在,我想使用HDF5 API参考文档所示的h5ltmake_dataset_string_f接口将此数组保存到数据集中

Fortran90接口:h5ltmake\u数据集\u字符串\u f

子例程h5ltmake_数据集_字符串_floc_id、数据集_名称、buf、错误代码

    implicit none
integerHID\u T,intentIN::loc\u id!文件或组标识符

characterLEN=*,intentIN::dset\u name!数据集的名称

characterLEN=*,意图,维度:::buf!数据缓冲区

整数::错误代码!错误代码

结束子例程h5ltmake\u数据集\u字符串\u f

下面是我的电话号码

h5ltmake_dataset_string_f(group_id, dset_name, strings, error)
在子例程调用之前,已经定义了组id、数据集名称和错误

但当我编译并构建这段代码时,会出现编译错误

h5ltmake_dataset_string_f:违反了实际参数和伪参数


那么如何将字符串写入一个数据集呢?

使用API,而不是h5ltmake_dataset_f来写入字符串数组。

虽然这个问题在几年前就已经解决了,但现在有了一个解决方案,可以使用HDFql将字符串数组hello,world,hello,HDF5,fortran写入fortran中的HDF5数据集。如果其他人在执行此类操作时发现自己在处理HDF5低级详细信息时遇到困难,请发布此消息:

程序示例 ! 使用HDFql模块,确保Fortran编译器可以找到它 使用HDFql ! 声明变量 CHARACTERLEN=20,DIMENSION5::strings=[CHARACTERLEN=20::hello,world,hello,HDF5,fortran] 字符::变量_数 整数::状态 ! 创建名为example.h5的HDF文件并使用,即打开它 state=hdfql_executeCREATE文件example.h5 state=hdfql_执行文件example.h5 ! 创建一个名为my_dataset的数据集,类型为char size 20,一维大小为5 state=hdfql_executeCREATE DATASET my_DATASET为CHAR5,20; ! 注册变量字符串以供HDFql后续使用 状态=hdfql\u变量\u寄存器字符串 可写变量_编号,I0状态 ! 插入,即将变量字符串的内容写入数据集my_数据集中 state=hdfql\u executeINSERT到my\u数据集值(从内存//变量\u编号) ! 取消注册HDFql不再使用/需要的变量字符串 state=hdfql\u变量\u取消注册字符串 结束程序
不过,目前Windows不支持用于HDFql的fortran API,对吗?@mikeck:从2.0.0版开始,HDFql通过其“英特尔fortran编译器IFORT包装器”在Windows中支持fortran。