24小时热门版块排行榜    

查看: 2429  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

studyhae

木虫 (正式写手)

[交流] 【求助】Frotran如何直接从键盘读取输入参数? 已有3人参与

RT,求高手指点。多谢。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whl2dxl

木虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+2): 谢谢回复,欢迎常来程序语言版! 2011-04-23 17:25:20
是从键盘输入然后读取吗?如果是的话可以参照下面
比如我想读入年龄
write(*,*) "ege"
read(*,*)  ege
3楼2011-04-22 22:02:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

snoopyzhao

至尊木虫 (职业作家)

★ ★
cenwanglai(金币+2): 谢谢回复,呵呵。 2011-03-30 19:01:49
CODE:
read (*,*) A, B, C

2楼2011-03-30 13:49:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liuhuisfp

金虫 (小有名气)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3): 谢谢参与应助!欢迎常来程序语言版! 2011-04-27 22:32:31
使用 CALL GETARG(n,buffer[,status])可以获取命令行参数(即运行程序时后面以空格隔开的参数)
我用gfortran编译试过可以。
忘了在哪个网页找到的,再次表示感谢。

n
输入,整数,INTEGER(2)。
参数的位置,命令本身的值为0:
command arg1 arg2
0       1    2

buffer
输出,字符串,Character*(*)。
返回的参数或命令:
command arg1 arg2
0       1    2
CALL GETARG(1,arg)
则,arg="arg1"

status
输出,整数,INTEGER(2),可选。
返回完成状态,如果错误,返回“-1”;如果正常,返回参数字符串的长度。
如果输入的n值小于0,或者大于参数的个数,则报错!

EXAMPLE:
PROGRAM TEST
INTEGER N1,N2
CHARACTER *20 NAME1

      N1=0
CALL GETARG(N1,NAME1)
WRITE(*,*) NAME1

      N1=1
CALL GETARG(N1,NAME1)
WRITE(*,*) NAME1

      N1=2
CALL GETARG(N1,NAME1)
WRITE(*,*) NAME1

      N1=3
CALL GETARG(N1,NAME1)
WRITE(*,*) NAME1

      N1=4
CALL GETARG(N1,NAME1)
WRITE(*,*) NAME1

      END

f77/gfortran test.f -o test
test just try get argc haha

输出:
test
just
try
get
argc

对于ifort编译器,getarg(n,string,status),有一个status变量,可以加,也可以不加。

对于C语言粉丝(说我那),可能会特别怀念main(int argc, char **argv)和C语言内部非常方便的数据转换。fortran也可以实现。

IARGC()就是获取命令行参数数目的。

同时,使用read和write语句可以方便地将命令行读入的字符串赋值给整形或者浮点变量。

      PROGRAM TESTGETARG

CHARACTER*80 CMMDLINE
INTEGER N,NN
REAL FTEMP

CALL GETARG(0,CMMDLINE,NN)
N=IARGC()
WRITE(*,*) CMMDLINE,N,NN,"FTEMP=",FTEMP

CALL GETARG(1,CMMDLINE,NN)
N=IARGC()
READ(CMMDLINE,*)FTEMP
WRITE(*,*) CMMDLINE,N,NN,"FTEMP=",FTEMP

CALL GETARG(2,CMMDLINE,NN)
N=IARGC()
READ(CMMDLINE,*)FTEMP
WRITE(*,*) CMMDLINE,N,NN,"FTEMP=",FTEMP


END

运行结果:

./testarg 123 4.5
./testarg                                                                     
2           9 FTEMP=  -1.229246   
123                                                                           
2           3 FTEMP=   123.0000   
4.5                                                                           
2           3 FTEMP=   4.500000

最后,度娘知道里面有一段,写的很好,转在下面。

原始地址:http://zhidao.baidu.com/question/134017037.html

character( 3 ) :: cStr = '123'
Integer :: iInt = 0
Read( cStr , * ) iInt

此时,iInt = 123(数字)

转换成浮点数也类似。

character( 3 ) :: cStr = '123'
Real :: rReal = 0.0
Read( cStr , * ) rReal

此时 rReal = 123.0

从数字转换成字符串,用 Write 既可

character( 3 ) :: cStr
Integer :: iInt = 123
Write( cStr , * ) iInt

此时 cStr = '123'
4楼2011-04-27 21:51:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+2): 谢谢参与应助! 2011-04-27 23:40:31
引用回帖:
Originally posted by liuhuisfp at 2011-04-27 21:51:47:
使用 CALL GETARG(n,buffer[,status])可以获取命令行参数(即运行程序时后面以空格隔开的参数)
我用gfortran编译试过可以。
忘了在哪个网页找到的,再次表示感谢。

n
输入,整数,INTEGER(2)。
参 ...

getarg 只是一个编译器的扩展,不是所有的编译器都是支持的,也就是说,使用了这样的扩展,可能使程序的可移植性变差。

在 Fortran 2003 中才提供一个类似的子程序 GET_COMMAND_ARGUMENT
5楼2011-04-27 22:43:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[文学芳草园] 厉娜 +3 张丹枫1991 2026-11-09 5/250 2026-11-09 16:53 by 张丹枫1991
[考博] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 kvewwGtKktqB 2026-11-04 12/600 2026-11-09 13:26 by Equinoxhua
[考研] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 ttH3f1oA6ace 2026-11-04 15/750 2026-11-09 13:19 by Equinoxhua
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +6 5sJFDKp2kwuI 2026-11-06 14/700 2026-11-09 11:52 by GwrQVVR6Oenx
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +5 5sJFDKp2kwuI 2026-11-06 16/800 2026-11-09 11:47 by GwrQVVR6Oenx
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 5sJFDKp2kwuI 2026-11-06 15/750 2026-11-09 11:41 by GwrQVVR6Oenx
[硕博家园] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 5sJFDKp2kwuI 2026-11-06 10/500 2026-11-09 08:00 by IhnEQauGmT3K
[考研] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 5sJFDKp2kwuI 2026-11-06 12/600 2026-11-09 06:32 by l48hFd8Nwae2
[公派出国] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +4 5sJFDKp2kwuI 2026-11-06 8/400 2026-11-09 00:14 by l48hFd8Nwae2
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +4 5sJFDKp2kwuI 2026-11-06 8/400 2026-11-08 23:01 by l48hFd8Nwae2
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +5 5sJFDKp2kwuI 2026-11-06 9/450 2026-11-08 22:46 by l48hFd8Nwae2
[教师之家] 延安大学回应“副教授留绝笔信”:确已离世,正核实举报内容 +3 yexuqing 2026-11-04 5/250 2026-11-07 13:22 by 苏东坡二世
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +5 ttH3f1oA6ace 2026-11-04 10/500 2026-11-06 16:12 by 5sJFDKp2kwuI
[公派出国] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +6 ttH3f1oA6ace 2026-11-04 12/600 2026-11-06 16:10 by 5sJFDKp2kwuI
[硕博家园] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 ttH3f1oA6ace 2026-11-04 11/550 2026-11-06 16:10 by 5sJFDKp2kwuI
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 kvewwGtKktqB 2026-11-04 14/700 2026-11-06 05:10 by qL1cU46YIdK0
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +6 kvewwGtKktqB 2026-11-04 16/800 2026-11-06 05:00 by qL1cU46YIdK0
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 ttH3f1oA6ace 2026-11-04 7/350 2026-11-06 02:13 by qL1cU46YIdK0
[考研] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +4 ttH3f1oA6ace 2026-11-04 10/500 2026-11-06 02:04 by qL1cU46YIdK0
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 ttH3f1oA6ace 2026-11-04 9/450 2026-11-06 02:02 by qL1cU46YIdK0
信息提示
请填处理意见