回 帖 发 新 帖 刷新版面

主题:怎么使用getarg给一个可执行的fortran程序传递参数?

请教各位大侠怎样调用getarg语句?是不是需要安装什么子程序集之类的东西或者说是用use语句啊?初次接触fortran,不是特别清楚,在网上搜索了一些帖子,还是没有搞清楚,希望各位大侠能够详细说明,感激不尽!!如果需要,可否给小妹提供一份程序集,谢谢!邮箱地址:zhangheng522@21cn.com

回复列表 (共12个回复)

沙发

用GET_COMMAND_ARGUMENT, 这个是fortran2003标准

板凳

我用的是f90啊??怎么办

3 楼

用IARGC取参数个数,用GETARG取参数字符串

Use DFLIB
Integer N
Character BUFF(2048)

Do N=1,IARGC()
    GETARG(N,BUFF)            ! 就这样取参数便OK啦:)
    Select Case BUFF
    Case '-h','-help'
        ! 输出命令行帮助
        Call OutputHelp()
    ! 其他代码省略之:)
    Case Default
        ! 输出命令行帮助
        Call OutputHelp()
    End Select
End Do

4 楼


为什么我的getarg语句不能变成蓝色呢?然后buff语句是要在哪输入呢??

5 楼

[quote]
为什么我的getarg语句不能变成蓝色呢?然后buff语句是要在哪输入呢??[/quote]
GETARG不是内置函数。
BUFF是个变量,用下面语句定义就行了:)
CHARACTER*512 BUFF

6 楼

不好意思,我想再请问一下,如果说我用这个语句
call getarg(1,cbuff)
read(cbuff,'(i)')bgt
cbuff也就是那个变量,如果是变量,又怎么将它的第一个值赋给bgt呢?变量不就是没有确定的值吗?

7 楼

call getarg... 会将第一个参数以字符串的方式给cbuff。
read(cbuff...会按格式串“'(i)'”规定的格式将cbuff中的内容给变量列表——在这里就是bgt

8 楼

你好,恕我愚笨,我还是没搞懂cbuff是在哪里被赋值的?比如说这样一个程序
program mypro 

character*80 buff
call getarg(0,buff)
write(*,*) buff
call getarg(1, buff)
write(*,*) buff
call getarg(2, buff )
write (*,*) buff
end
我对程序命名为mypro 第一个读取输出的是文件名g:\debug\mypro.exe
那第二个,第三个呢,在哪赋值,我看有帖子说是键入,但是怎么键入呢,这样运行出来,输入任何东西都continue了啊???

9 楼

在:
PROJECT Options-》DEBUG-》PARAMETER
下输入参数:)
或是在命令行执行您的程序:
g:\debug\mypro.exe 123 456 789

10 楼

不好意思。还要再麻烦您一下,我在project下面没有找到options项啊??我只找到了settings项

我来回复

您尚未登录,请登录后再回复。点此登录或注册