我正在用 c 为 fortran 程序编写一个模块,我需要将一些字符串传递给 fortran 程序。我无法修改 fortran 代码,但可以编写自己的 fortran 代码来调用现有代码。我试过用谷歌搜索这个,有很多不同的方法写在我不理解的水平上。
c 字符串的长度是可变的(尽管它是在传递之前设置的)。fortran“字符串”被声明为字符*(*),所以我看不到字符数组需要填充的长度。这是一些代码片段,看看我需要做什么。
我正在编写的 c 函数:
void c_func(int db_handle) {
char *geom_name;
int geom_handle = 0;
size_t geom_name_len = db_get_len(db_handle); !gets the length of the name
geom_name = (char *)malloc(sizeof(char*(geom_name_len+1)));
db_pull(db_handle, geom_name); !pulls geom_name from db as a null terminated string
call_fortan_function(geom_handle, geom_name); !The fortran function will set the integer
...}
我无法修改的 fortran 函数使用名称执行一些操作,然后为句柄设置一个值:
logical function f_fn(handle, name)
integer handle
character*(*) name
我认为最好的方法是创建一个单独的 c 函数,将 geom_name 解析为一些 fortran 将使用的内容,然后创建一个 fortran 函数来创建 fortran 字符串并将其传递给我无法更改的函数,但是我不知道该怎么做。有什么帮助吗?