2013-11-09 187 views
1

这是我的get_command_argument() question的后续操作。将字符串转换为整数

我正在读取一个命令行参数(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 
+0

知道了[这里](http://gcc.gnu.org/onlinedocs/gfortran/ICHAR.html),哎呀,Fortran语言是一个很大的不同由C ;-) – seb

+0

@HighPerformanceMark不'command_argument_count()'只是返回参数的数量(我读了[这里](http://gcc.gnu.org/onlinedocs/gfortran/COMMAND_005fARGUMENT_005fCOUNT.html)),但我仍然喜欢使用参数的实际值。 – seb

回答

1

您想使用“内部文件”功能。 你应该有一个像read(arg,*) j声明。 这将读取字符变量arg,就好像它是一个文件 并将结果存储到j

+0

我刚试过。在调用get_command_argument()之后,我把** read(arg,'(I32)')j **放入行中,但是在运行时出现错误:**列表输入中的项目1的错误整数** – seb

+0

已获得它,我很习惯C语言中的argc和argv,我完全错过了* get_command_argument()*中的**第一个参数**实际上是可执行文件的调用的地方,duh。 :-) – seb

+1

取决于你的意思是第一个参数...... fortran通常是基于1的,而不是C,因为C是。 'get_command_argument'是我见过的唯一例外,其中'0'表示程序的名称,'1'表示发送给程序的第一个参数。 – dwwork

1

这不是一个答案,但延长的评论:这是一个奇怪的方式来遍历所有的命令行参数

。什么是错的简单和明显的

do i = 1, command_argument_count() 
    call get_command_argument(i,arg) 
    ! do funky stuff  
end do 
+0

我同意。在[gcc.gnu.org网站]上找到了这个例子(http://gcc.gnu.org/onlinedocs/gfortran/GET_005fCOMMAND_005fARGUMENT.html)。 – seb