Python/Fortran interoperability
sturlamolden
sturlamolden at yahoo.no
Sun Aug 23 19:59:34 EDT 2009
On 24 Aug, 00:02, Dennis Lee Bieber <wlfr... at ix.netcom.com> wrote:
> That's a C language problem -- since a string in C is just an array
> of character. The last FORTRAN dialect (and implementation) I used
> passed strings
On 24 Aug, 00:02, Dennis Lee Bieber <wlfr... at ix.netcom.com> wrote:
> values -- FORTRAN strings were typically static, the called function
> could not reallocate to fit in longer data and update the descriptor to
> match)
It is possible to pass an arbitrary length. You have to convert a
pointer from C to Fortran:
subroutine foobar(cstr) bind(c, name='foobar')
use, intrinsic :: iso_c_binding
type(c_ptr) :: cstr
character(*), pointer :: fstr
call c_f_pointer(cptr, fptr)
If you need the length, call strlen from libc.
I think the OP has misunderstood how the Fortran 2003 C bindings work.
They don't convert C pointers to Fortran strings or Fortran arryas.
They convert C pointers to Fortran pointers.
Sturla
More information about the Python-list
mailing list