|
|
★ ★ ★ ★ 小木虫(金币+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' |
|