我正在尝试使用“iso_c_binding”将一个字符串数组从 C 返回到 Fortran。该程序编译,但给出一个运行时错误。我的 C 程序:
#include <stdio.h>
void ret_array(int * numStrings, char **arr2 ) {
int dim1=5;
char *arr1[5]={"name1","name2","name3","name4","name5"};
arr2 = &arr1;
printf("%s\n",arr2[0]);
printf("%s\n",arr2[1]);
printf("%s\n",arr2[2]);
printf("%s\n",arr2[3]);
printf("%s\n",arr2[4]);
numStrings = &dim1;
printf("%s","Ending interface :");
fflush(stdout);
}
Run Code Online (Sandbox Code Playgroud)
我的调用 Fortran 程序
program main
implicit none
CHARACTER(LEN = 255), dimension(:), allocatable:: str2
integer(kind = 4):: istr
call get_arr(istr, str2)
PRINT *, str2(1)
contains
subroutine get_arr(n, str1)
use iso_c_binding
implicit none
INTEGER(KIND = 4):: n
CHARACTER(LEN = 255), dimension(:), ALLOCATABLE:: str1
character(kind = c_char), …Run Code Online (Sandbox Code Playgroud)