2017-09-21 71 views
0

我想用輸入和輸出文本文件運行我的項目文件。編譯完成後,我得到一個錯誤,說它無法打開輸入文本文件,但它與編譯腳本位於相同的文件夾/路徑中。順便說一句,它正在開發Windows 7就像一個魅力!gfortran在ubuntu中的文件打開問題

如何運行FORTRAN 90打開文本文件作爲它在Ubuntu 16.04上的輸入和輸出而沒有任何錯誤?

這裏是我的代碼

!Seyed Ahmad Abtahi 
!1396/04/14 

PROGRAM ROKNI_PERSIAN_GULF 

REAL::BATH(60,104) 

INTEGER::X,nobu,nobv,nobu_start,nobu_end,nobv_start,nobv_end 

CHARACTER*60::FILE1,FILE2 

CHARACTER(8)::STR 

! Give the path to the input and output file names 

FILE1 = "BATH4.TXT" 

FILE2 = "BATHYOUT.DAT" 

! Number of Open Boundaries of Horizontal vector V 

nobv_start = 24 

nobv_end = 103 

nobv = nobv_end - nobv_start + 1 

! Number of Open Boundaries of Vertical vector U 

nobu_start = 1 

nobu_end = 5 

nobu = nobu_end - nobu_start + 1 

! Reading raw data from input file and change the simple bathymetry to scientific numebers 

OPEN (1, FILE = FILE1, FORM = 'FORMATTED', STATUS = 'OLD') 

DO I = 1 , 60 

     READ(1,*)(BATH(I,J),J=1,103) 

     WRITE(*,*)(BATH(I,J),J=1,103) 

ENDDO 

CLOSE (1) 

! Writing the calculated bathymetry to the output file 

OPEN (2 , FILE = FILE2 , FORM = 'FORMATTED', STATUS = 'REPLACE', ACTION = 'WRITE' , RECL = 12*60*103) 

WRITE (2 , '(104(1P,E15.7E2))')((BATH(I,J) , J = 1 , 104) , I = 1 , 60)         

! Writing NOBU coordinations 

WRITE (2 , '(A5,I3)')'nobu:',nobu 

DO X = nobu_start , nobu_end 

    WRITE (STR , '(I4)') X 

    WRITE (2,'(2(A4))') ' 103', STR 

END DO 

! Writing NOBV coordinations 

WRITE (2 , '(A5,I3)')'nobv:',nobv 

DO X = nobv_start , nobv_end 

    WRITE (STR , '(I4)') X 

    WRITE (2,'(2(A4))') STR , ' 1' 

END DO   

END PROGRAM 
+0

再次檢查文件的存在。 Linix是**區分大小寫**,因此即使使用大寫字母,也要檢查文件名是否正確**。我建議你不要使用低於10的單位數,因爲它們通常被保留用於特殊目的。大多數情況下,0,5和6是保留的,但1和2對於某些編譯器也是如此。 –

+0

下一次,請向我們顯示* exact *錯誤消息。不要說*「錯誤,說它無法打開輸入文本文件」*,但顯示錯誤!請參加[遊覽]並閱讀[問]。 –

+0

注意默認目錄不是可執行文件所在的目錄,它是執行該命令的目錄。 – agentp

回答

0

定義fileplace又作爲變量如:

CHARACTER(*), PARAMETER :: fileplace = "./" 

或到處你想要的。

同樣在open語句中用你的文件名定義你的文件名並注意語法。 Unix對小字符和大寫字符是區分大小寫的。

如下更改您的公開聲明:

OPEN (1, FILE=fileplace//"BATH4.txt", FORM = 'FORMATTED', STATUS = 'OLD') 

OPEN (2 , FILE=fileplace//"BATHYOUT.dat" 
+0

歡迎索菲亞。一定要參加[旅遊]。我們不會在此處簽署我們的帖子,您的名字會自動置於您的帖子的正下方。請在這裏研究格式。不要使用** bold **作爲代碼,使用'code'。另請嘗試在您的網絡瀏覽器中啓用拼寫檢查程序。 –