C 関数を呼び出す Fortran サブルーチンがあります。C 関数の引数の 1 つは fortran 文字列です。これは、長さ 512 バイトの空の文字列として初期化され、C 関数に として渡さtrim(str)//char(0)
れ\0
ますstrlen
。
character(len=512) :: str = ""
call C_foo ( trim(str)//char(0) )
C関数内で、これを行うことができますか
strncpy (str, "something", strlen("something") )
私が知りたいのは、 docstrim
に記載されている変換関数であるため、それを C に渡すと実際に割り当てられたスペースが変更されるということです。C 関数内で、strncpy が失敗することはありますか (ソース文字列の長さが 512 未満の場合) ? 試してみましたが、問題なく動作しますが、安全であることを確認したいと思います。