Fortran 将字符串转换为整数
这是对我的建议的后续行动 我正在将命令行参数(Fortran 将字符串转换为整数,fortran,string-conversion,Fortran,String Conversion,这是对我的建议的后续行动 我正在将命令行参数(arg)读入Fortran程序。然后我想将arg的值存储为一个整数ichar()不起作用 这似乎有点基本,所以很明显我做错了什么。有什么提示吗 program test_get_command_argument integer :: i,j character(len=32) :: arg i = 0 do call get_command_argument(i,arg) if (LEN_TRIM
arg
)读入Fortran程序。然后我想将arg
的值存储为一个整数<代码>ichar()不起作用
这似乎有点基本,所以很明显我做错了什么。有什么提示吗
program test_get_command_argument
integer :: i,j
character(len=32) :: arg
i = 0
do
call get_command_argument(i,arg)
if (LEN_TRIM(arg) == 0) EXIT
write (*,*) trim(arg)
i = i + 1
end do
j = ichar(arg)
end program
您希望使用“内部文件”功能。
您应该有一个类似于read(arg,*)j
的语句。
这将读取字符变量arg
,就像它是一个文件一样
并将结果存储到
j
这不是答案,而是扩展注释:
这是一种奇怪的循环命令行参数的方式。直截了当和明显的错误是什么
do i = 1, command_argument_count()
call get_command_argument(i,arg)
! do funky stuff
end do
明白了,天哪,Fortran和C有很大不同;-)@HighPerformanceMark不会
命令\u argument\u count()
只返回参数的数量(我读过),但我仍然希望使用参数的实际值。我只是尝试了一下。我在调用get_command_argument()后的一行中放入了read(arg),(I32)’j,但在运行时我得到了错误:list inputGet it中的项1的整数不正确,我太习惯C中的argc和argv了,以至于我完全忽略了get_command_argument()中的第一个参数实际上是对可执行文件的调用,duh.:-)取决于第一个参数的含义…fortran通常是基于1的,而不是像C那样基于0的get\u command\u参数
是我见过的唯一例外,其中0
表示程序名,1
表示发送到程序的第一个参数。是的,这也是我迄今为止(在我很短的fortran职业生涯中)见过的唯一例外;-)我同意。在中,我们在上找到了此示例。