24小时热门版块排行榜    

Znn3bq.jpeg
汕头大学海洋科学接受调剂
查看: 2195  |  回复: 4

studyhae

木虫 (正式写手)

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

RT,求高手指点。多谢。
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

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的回帖

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的回帖

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的回帖
相关版块跳转 我要订阅楼主 studyhae 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿沪9,生物学326求调剂 +4 刘墨墨 2026-04-15 4/200 2026-04-15 14:34 by woshi0655
[考研] 0854调剂 +13 长弓傲 2026-04-12 16/800 2026-04-15 13:45 by fenglj492
[考研] 294求调剂 +3 淡然654321 2026-04-15 3/150 2026-04-15 13:13 by Llllss12
[考研] 本科211,报考085601-310分 +16 ararak 2026-04-13 16/800 2026-04-14 14:55 by Delta2012
[基金申请] RY:中国产出的科学垃圾论文,绝对数量和比例都世界第一 +6 zju2000 2026-04-14 17/850 2026-04-14 14:34 by jurkat.1640
[考研] 人工智能320调剂08工类还有机会吗 +18 振—TZ 2026-04-10 19/950 2026-04-14 10:34 by screening
[考研] 302求调剂 +10 易!? 2026-04-13 10/500 2026-04-13 19:04 by lbsjt
[考研] 一志愿厦大生物学332求调剂 +11 池池池池池池 2026-04-08 11/550 2026-04-13 14:10 by 科研论
[考研] 290求调剂 +18 柯淮然 2026-04-12 20/1000 2026-04-13 12:56 by cyh—315
[考研] 291求调剂 +8 关忆北. 2026-04-11 8/400 2026-04-12 09:32 by 逆水乘风
[考研] 一志愿厦大0856,306求调剂 +15 Bblinging 2026-04-11 15/750 2026-04-11 22:53 by 314126402
[考研] 086003调剂求助 +21 苏弋万 2026-04-09 22/1100 2026-04-11 20:25 by dongdian1
[考研] 求调剂,一志愿大连理工大学354分 +5 雨声余生 2026-04-11 6/300 2026-04-11 16:12 by 雨声余生
[考研] 调剂 +5 文道星台 2026-04-11 5/250 2026-04-11 15:01 by 凯凯要变帅
[考研] 22408 352分求调剂0854类 +4 努力的夏末 2026-04-09 4/200 2026-04-11 09:57 by zhq0425
[考研] 0854调剂 +4 长弓傲 2026-04-09 4/200 2026-04-11 09:18 by 猪会飞
[考研] 337求调剂 +4 研s. 2026-04-10 4/200 2026-04-11 08:57 by zhq0425
[考研] 263能源动力专硕求调剂 +4 加大号饭盒袋 2026-04-10 4/200 2026-04-10 20:52 by gong120082
[考研] 265求调剂 +12 风说她早忘了 2026-04-10 13/650 2026-04-10 18:56 by chemisry
[考研] 化学工程与技术专业一志愿哈工程 291分B区 国家级大创负责人 有一作论文 +13 Emmy~ 2026-04-09 13/650 2026-04-09 14:47 by only周
信息提示
请填处理意见