2013-11-09 189 views
2

我試圖從命令行將參數傳遞給Fortran可執行文件。該實現這在C的樣品程序(從here截取):從命令行將參數傳遞給可執行文件

#include <stdio.h> 

int main (int argc, char *argv[]) 
{ 
    int count; 

    printf ("This program was called with \"%s\".\n",argv[0]); 

    if (argc > 1) 
    { 
     for (count = 1; count < argc; count++) 
    { 
     printf("argv[%d] = %s\n", count, argv[count]); 
    } 
    } 
    else 
    { 
     printf("The command had no other arguments.\n"); 
    } 

    return 0; 
} 

該程序的輸出是:

This program was called with "./fubar". 
argv[1] = a 
argv[2] = b 
argv[3] = c 

我現在的問題是:如何將代碼本程序(並因此這個功能)在Fortran中?我已經使用了這個,並且似乎只有Fortran 2003具有將參數傳遞給可執行文件的功能(這是否正確)?

+1

的肯定,獲得命令行參數僅在Fortran 2003中標準化,但所有廣泛使用的編譯器都實現了該功能。你寫就好像是2004年左右。嘗試搜索'fortran獲取命令行參數' –

+0

謝謝。我現在正在學習Fortran,所以當我對這些東西進行Google搜索時,判斷結果有時並不容易。雖然你的建議非常有幫助! – seb

回答

1

以供將來參考,如@High性能標誌上面所指出的,這是很容易下面的示例代碼從here採取做到這一點用Fortran 2003年,並說明如何:

 PROGRAM test_get_command_argument 
     INTEGER :: i 
     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 
     END PROGRAM 
+0

clean使用..COMMAND_ARGUMENT_COUNT()。爲什麼在世界標準委員會不只是採用事實標準getarg(),iargc()擊敗我.. – agentp

+0

@george,謝謝,我檢查出來 – seb

+0

對不起,如果這太簡單了......我的意思最好使用arg count作爲循環限制,而不是使用if()exit構造 – agentp

相關問題