24小时热门版块排行榜    

查看: 2165  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿吉林大学材料学硕321求调剂 +9 Ymlll 2026-03-18 12/600 2026-03-20 00:01 by 23Postgrad
[考研] 286分人工智能专业请求调剂愿意跨考! +3 lemonzzn 2026-03-17 3/150 2026-03-19 23:58 by 23Postgrad
[考研] 288求调剂,一志愿华南理工大学071005 +5 ioodiiij 2026-03-17 5/250 2026-03-19 18:22 by zcl123
[考研] 招收调剂硕士 +4 lidianxing 2026-03-19 10/500 2026-03-19 16:05 by 余麟余
[考研] 324分 085600材料化工求调剂 +3 llllkkkhh 2026-03-18 3/150 2026-03-19 14:22 by houyaoxu
[考研] 085600材料与化工求调剂 +6 绪幸与子 2026-03-17 6/300 2026-03-19 13:27 by houyaoxu
[考研] 281求调剂(0805) +9 烟汐忆海 2026-03-16 19/950 2026-03-19 11:42 by laoshidan
[考研] 材料080500调剂求收留 +4 一颗meteor 2026-03-13 4/200 2026-03-19 10:32 by 30660438
[考研] 311求调剂 +4 冬十三 2026-03-18 4/200 2026-03-18 21:47 by 尽舜尧1
[考研] 一志愿武理材料305分求调剂 +5 想上岸的鲤鱼 2026-03-18 6/300 2026-03-18 17:53 by 无际的草原
[考研] 311求调剂 +6 26研0 2026-03-15 6/300 2026-03-18 14:43 by haxia
[考研] 298-一志愿中国农业大学-求调剂 +7 手机用户 2026-03-17 7/350 2026-03-18 14:34 by vgtyfty
[考博] 环境领域全国重点实验室招收博士1-2名 +3 QGZDSYS 2026-03-13 5/250 2026-03-18 11:13 by QGZDSYS
[基金申请] 被我言中:新模板不强调格式了,假专家开始管格式了 +4 beefly 2026-03-14 4/200 2026-03-17 22:04 by 黄鸟于飞Chao
[考研] 有没有道铁/土木的想调剂南林,给自己招师弟中~ +3 TqlXswl 2026-03-16 7/350 2026-03-17 15:23 by TqlXswl
[考研] 0854控制工程 359求调剂 可跨专业 +3 626776879 2026-03-14 9/450 2026-03-16 17:42 by 626776879
[考研] 304求调剂 +3 曼殊2266 2026-03-14 3/150 2026-03-16 16:39 by houyaoxu
[考研] 277材料科学与工程080500求调剂 +3 自由煎饼果子 2026-03-16 3/150 2026-03-16 14:10 by 运气yunqi
[硕博家园] 085600 260分求调剂 +3 天空还下雨么 2026-03-13 5/250 2026-03-13 18:46 by 天空还下雨么
[考研] 290求调剂 +3 ADT 2026-03-13 3/150 2026-03-13 10:19 by peike
信息提示
请填处理意见