24小时热门版块排行榜    

Znn3bq.jpeg
查看: 2198  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 国自然面上和省基金B类撒花 +5 花田半亩~白 2026-04-21 5/250 2026-04-22 10:40 by yujiage7
[教师之家] 又一批高校组建人工智能学院 师资行吗 不是骗人吗 +5 yexuqing 2026-04-19 5/250 2026-04-22 10:01 by easeheart
[考研] 0854求调剂 +24 门路摸摸 2026-04-15 28/1400 2026-04-22 09:54 by Sy199704!
[论文投稿] 急需审稿人!!! +3 陆小果画大饼 2026-04-21 3/150 2026-04-21 23:54 by jzy_123456
[考研] 一志愿A区211,22408 321求调剂 +7 随心所欲☆ 2026-04-15 8/400 2026-04-21 08:22 by Equinoxhua
[考研] 295分求调剂 +6 ?要上岸? 2026-04-17 6/300 2026-04-21 08:18 by Equinoxhua
[考研] 一志愿中科大材料与化工,353分还有调剂学校吗 +11 否极泰来2026 2026-04-15 13/650 2026-04-20 22:31 by Equinoxhua
[考研] 085600材料与化工调剂 5+3 孜孜不倦2002 2026-04-19 6/300 2026-04-20 21:25 by babero
[论文投稿] 期刊推荐 +3 材料研究生 2026-04-15 5/250 2026-04-20 16:02 by 豆豆7758
[论文投稿] 有没有接收比较快的sci期刊呀,最好在一个月之内的,研三孩子求毕业 20+4 之护着 2026-04-16 7/350 2026-04-20 15:45 by 豆豆7758
[考博] 申博 +3 Xyyx. 2026-04-18 3/150 2026-04-20 10:44 by YuY66
[考研] 294求调剂 +8 淡然654321 2026-04-17 9/450 2026-04-19 19:51 by Equinoxhua
[考研] 304求调剂 +8 castLight 2026-04-16 8/400 2026-04-19 17:14 by 中豫男
[考研] 300求调剂 +12 橙a777 2026-04-15 12/600 2026-04-18 23:51 by 路病情
[考研] 接受任何调剂 +6 也就是栗子 2026-04-17 7/350 2026-04-18 17:20 by 涵竹刘
[考研] 收到复试调剂但是去不了 +8 小蜗牛* 2026-04-16 8/400 2026-04-18 11:15 by zixin2025
[考研] 260求调剂 +4 Zyt1314520.. 2026-04-17 5/250 2026-04-18 08:28 by babysonlkd
[考研] 急需调剂 +9 绝不放弃22 2026-04-15 10/500 2026-04-18 08:09 by chixmc
[有机交流] 二苯甲酮酸类衍生物 50+3 小白爱主人 2026-04-17 6/300 2026-04-17 18:47 by kf2781974
[考研] 322求调剂 +6 tekuzu 2026-04-17 6/300 2026-04-17 13:48 by Espannnnnol
信息提示
请填处理意见