Я попробовал это с компилятором Intel C и компилятором Intel Fortran. Это дало, в C,
#include <stdio.h>
int main(void)
{
extern void test_f_(char*, int);
test_f_("abcdef",6);
}
, а в Фортране
subroutine test_f(s)
implicit none
character*(*), intent(in) :: s
character*6 :: c
write (*,*) 'S is ', s
write (*,*) 'Length of S is', len(s)
c = s
write (*,*) 'Implicit-copied C is ', c
c(1:6) = s(1:6)
write (*,*) 'Range-copied C is ', c
end subroutine test_f
При компиляции и запуске выдает
S is abcdef
Length of S is 6
Implicit-copied C is abcdef
Range-copied C is abcdef
Какова ваша декларация в подпрограмме C для типа подпрограммы Fortran? Вы уверены, что размеры символьных и целочисленных переменных одинаковы в коде C и на языке Fortran?