http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51434
--- Comment #6 from Steve Kargl <sgk at troutmask dot apl.washington.edu> 2011-12-06 15:59:17 UTC --- On Tue, Dec 06, 2011 at 06:40:07AM +0000, andy.nelson at lanl dot gov wrote: > > Can you recommend a better way to solve this problem, besides redefining the C > standard to accept 'scalar' character strings longer than one character? > Don't know if the code conforms to the C and Fortran standards, but this appears to work. % cat foo.c #include <stdio.h> void foo(char *s) { printf("%s\n", s); } % cat bar.f90 program bar use iso_c_binding character(len=5,kind=c_char) :: s interface subroutine foo(s) bind(c) use iso_c_binding character(len=1, kind=c_char) :: s end subroutine foo end interface s = 'abcd' call foo(s // char(0)) end program bar % gcc46 -c foo.c % gfortran46 -o z bar.f90 foo.c % ./z abcd It should be straight forward to modify your code. The key is to null terminate the string you are passing into the C routine, i.e., the char(0) above.