2013-11-09 243 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