C#调用FORTRAN,windows模式下,想传一个文件名给FORTRAN,让FORTRAN处理该文件。初学求高手指点 20

FORTRAN代码:subroutineArr_Sub(name)!DEC$ATTRIBUTESDLLEXPORT::Arr_Sub!DEC$ATTRIBUTESALIA... FORTRAN代码:

subroutine Arr_Sub (name)
!DEC$ ATTRIBUTES DLLEXPORT :: Arr_Sub
!DEC$ ATTRIBUTES ALIAS:'Arr_Sub'::Arr_Sub
character(len=20)::name
open(9,file="test.dat")
write(9,*)name
close(9)
end subroutine

C#代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
string name = "一个文件";

[DllImport(@"E:\c#\TRY\TestDll\TestDll\Debug\TestDll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern void Arr_Sub(string name );

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

Arr_Sub(name);
}

运行正常,但是生成的test.txt里面写的除了“一个文件之外还有乱码,
如果把write(9,*)name改成write(9,"(A8)")name将可以只输出”一个文件“四字。
如果把write(9,*)name改为write(9,*)len_trim(name)则输出20,即FORTRAN里name开始定义时的长度。
也就是C#传过来的字符串除了我定义的内容外还有别的FORTRAN无法识别的内容。

请问如何才能让FORTRAN只正确接收到我穿过去的字符??
另外窗口模式下C#怎样添加一个输入框让我们再点击BUTTON前先输出我要的文件名,然后在点击后把我输入的文件名赋值给将要传给FORTRAN的字符串呢??
谢谢!
展开
 我来答
天河流纹石
2013-05-13 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4050万
展开全部
试祥念碧试高正看

subroutine Arr_Sub (name)
!DEC$ ATTRIBUTES DLLEXPORT :: Arr_Sub
!DEC$ ATTRIBUTES ALIAS:'Arr_Sub'谨举::Arr_Sub
character(len=*)::name
open(9,file="test.dat")
write(9,*)name
close(9)
end subroutine

C#
public static extern void Arr_Sub(string name , 8 );
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式