| 查看: 2093 | 回复: 4 | |||
studyhae木虫 (正式写手)
|
[交流]
【求助】Frotran如何直接从键盘读取输入参数? 已有3人参与
|
| RT,求高手指点。多谢。 |
» 猜你喜欢
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有4人回复
磺酰氟产物,毕不了业了!
已经有6人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有9人回复
Cas 72-43-5需要30g,定制合成,能接单的留言
已经有8人回复
北京211副教授,35岁,想重新出发,去国外做博后,怎么样?
已经有8人回复
论文终于录用啦!满足毕业条件了
已经有25人回复
自荐读博
已经有3人回复
不自信的我
已经有5人回复
投稿Elsevier的杂志(返修),总是在选择OA和subscription界面被踢皮球
已经有8人回复
snoopyzhao
至尊木虫 (职业作家)
- 程序强帖: 16
- 应助: 157 (高中生)
- 贵宾: 0.02
- 金币: 18844.7
- 红花: 29
- 帖子: 3803
- 在线: 1422.4小时
- 虫号: 183750
- 注册: 2006-02-13
- 专业: 污染生态化学
2楼2011-03-30 13:49:14
whl2dxl
木虫 (小有名气)
- 应助: 2 (幼儿园)
- 金币: 2115.6
- 红花: 3
- 帖子: 151
- 在线: 115小时
- 虫号: 1267846
- 注册: 2011-04-17
- 性别: GG
- 专业: 理论和计算化学
3楼2011-04-22 22:02:14
★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3): 谢谢参与应助!欢迎常来程序语言版! 2011-04-27 22:32:31
小木虫(金币+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
snoopyzhao
至尊木虫 (职业作家)
- 程序强帖: 16
- 应助: 157 (高中生)
- 贵宾: 0.02
- 金币: 18844.7
- 红花: 29
- 帖子: 3803
- 在线: 1422.4小时
- 虫号: 183750
- 注册: 2006-02-13
- 专业: 污染生态化学
5楼2011-04-27 22:43:41












回复此楼