我用C写一个模块Fortran程序的接口,我需要一些字符串传递给Fortran程序。我无法修改fortran代码,但可以编写我自己的fortran代码来调用现有代码。我曾试着用google搜索,并且有很多不同的方法是我不了解的级别。如何创建转换为C字符数组用于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
我假设要做到这一点,是要创造一个分析geom_name到一些东西,FORTRAN将使用,然后一个FORTRAN函数来创建FORTRAN字符串,并将其传递给我不能改变功能的单独的C函数的最佳方式,但我不知道该怎么做。任何帮助?