24小时热门版块排行榜    

Znn3bq.jpeg
汕头大学海洋科学接受调剂
查看: 2187  |  回复: 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的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 通信工程求调剂!!! +4 zlb770521 2026-04-14 4/200 2026-04-14 18:19 by lbsjt
[考研] 272分材料子求调剂 +41 Loy0361 2026-04-10 54/2700 2026-04-14 18:00 by lhj2009
[考研] 297,工科调剂?河南农业大学本科 +9 河南农业大学-能 2026-04-14 9/450 2026-04-14 16:03 by Art1977
[考研] 各位老师好,求调剂,本科211,一志愿天津大学生物与医药学硕,差两名录取。 +11 路六六jjj 2026-04-13 11/550 2026-04-14 16:01 by zs92450
[考研] 一志愿沪9,326求生物学调剂 +10 刘墨墨 2026-04-13 10/500 2026-04-14 15:16 by zs92450
[考研] 本科211,报考085601-310分 +16 ararak 2026-04-13 16/800 2026-04-14 14:55 by Delta2012
[考研] 考研英一数一338分 +9 长江大学东校区 2026-04-13 10/500 2026-04-14 00:41 by 王珺璞
[考研] 考研二轮调剂 +10 故人?? 2026-04-09 10/500 2026-04-13 09:55 by szhize
[考研] 295分求调剂 +13 ?要上岸? 2026-04-10 13/650 2026-04-12 15:37 by laoshidan
[考研] 电气专硕320求调剂 +6 小麻子111 2026-04-10 6/300 2026-04-12 10:54 by lemon6009
[考研] 0854调剂 +12 长弓傲 2026-04-09 13/650 2026-04-12 09:56 by 逆水乘风
[考研] 352 求调剂 +6 yzion 2026-04-11 8/400 2026-04-11 16:24 by 明月此时有
[考研] 0854调剂 +8 950824he@ 2026-04-09 8/400 2026-04-11 10:11 by zhq0425
[考研] 吉大计算机技术331分,英语六级,求调剂 +3 峰峰021116 2026-04-09 3/150 2026-04-10 20:01 by chemisry
[考研] 一志愿华东师范生物学326分,求调剂 +8 刘墨墨 2026-04-09 8/400 2026-04-10 12:00 by pengliang8036
[考研] 青岛科技大学材料学院,环境学院调剂补录4月10日以前都可以 +3 1青科大。 2026-04-09 5/250 2026-04-10 09:58 by 翩翩一书生
[考研] 0860004 求调剂 309分 +6 Yin DY 2026-04-09 6/300 2026-04-09 10:19 by 啊李999
[考研] 求调剂 +3 猪肉墩粉条cc 2026-04-08 4/200 2026-04-09 10:05 by 猪肉墩粉条cc
[考研] 二次调剂求老师收留 +3 笑笑袁 2026-04-08 3/150 2026-04-08 23:50 by 醉在风里
[考研] 296求调剂 +3 汪!?! 2026-04-08 3/150 2026-04-08 22:00 by zhouyuwinner
信息提示
请填处理意见