如何使用CHARACTER*50类型的参数将参数从C#传递到FORTRAN?我有以下FORTRAN:SUBROUTINEMYSUB(MYPARAM)!DEC$ATTRIBUTESDLLEXPORT::SetPathsCHARACTER*50MYPARAMWRITE(6,*)MYPARAMENDSUBROUTINE然后我在C#类程序中有以下内容{staticvoidMain(string[]args){StringBuildersb=newStringBuilder(50);sb.Append(@"something");我的订阅者(某人);控制台.ReadLine();}[DllImport(@"myCode.dll",EntryPoint="MYSUB")]publicstaticexternvoidMYSUB(StringBuilderinput);然而,我在FORTRAN中的WRITE在“某事”之后显示了一堆垃圾。看起来字符串终止符没有被遵守。帮助!字符串是在语言之间交换的最棘手的数据类型。基本Fortran字符串是固定长度的,并以空格结尾。(Fortran现在有可变长度的字符串,但它们更难互换。)内在的“trim”用于抑制尾随空格;“len_trim”提供长度减去尾随空格。C用空字符标记字符串的结尾。我不知道C#是如何处理字符串的——内部变量的长度?终结者?但Fortran无法理解C#表示,它只能看到声明字符串的完整长度,在本例中包括未初始化的内存。最好的解决方案可能是在C#中将字符串的其余部分初始化为空格。以上是C#学习教程:HowtopassparametersfromC#toFORTRANusingparametersoftypeCHARACTER*50?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
