将字符串数组从Fortran传递到C可以通过以下步骤实现:
extern
关键字声明Fortran函数的原型,以便在C代码中调用该函数。char*
类型来接收Fortran传递的字符串数组。由于Fortran中的字符串以空字符结尾,因此可以使用strlen
函数获取字符串的长度。strcpy
函数将Fortran传递的字符串复制到C中的字符数组中。下面是一个示例代码:
Fortran代码(示例.f90):
subroutine fortran_to_c(strings, num_strings, string_length)
implicit none
character(len=*), intent(in) :: strings(:)
integer, intent(in) :: num_strings, string_length
integer :: i
do i = 1, num_strings
call c_function(strings(i), string_length)
end do
end subroutine
C代码(示例.c):
#include <stdio.h>
#include <string.h>
extern void fortran_to_c_(char* strings, int* num_strings, int* string_length);
void c_function(char* string, int string_length) {
char c_string[string_length + 1];
strncpy(c_string, string, string_length);
c_string[string_length] = '\0';
printf("Received string from Fortran: %s\n", c_string);
}
int main() {
char strings[3][10] = {"Hello", "World", "Fortran"};
int num_strings = 3;
int string_length = 10;
fortran_to_c_(strings, &num_strings, &string_length);
return 0;
}
在上述示例中,Fortran代码中的fortran_to_c
子程序将字符串数组逐个传递给C函数c_function
。C函数将接收到的字符串打印出来。
请注意,上述示例仅演示了如何将字符串数组从Fortran传递到C,并在C中进行简单的打印操作。实际应用中,您可能需要根据具体需求进行进一步的处理和操作。
领取专属 10元无门槛券
手把手带您无忧上云