簡體   English   中英

如何在Fortran 90中打開和讀取多個文件

[英]How to open and read multiple files in Fortran 90

我有一些有關打開和讀取多個文件的問題。 我必須編寫一個代碼,讀取以相同方式設置的n個文件中的兩列(它們僅在值方面有所不同...)。 在此之前,我打開另一個輸入文件和一個輸出文件,在其中寫入結果。 我在該論壇上閱讀了其他問題( 例如this ),並試圖做同樣的事情,但是我收到了以下錯誤消息:

 read(fileinp,'(I5)') i-49
                   1
 devstan.f90:20.24:

 fileLoop : do i = 50,52
                    2
 Error: Variable 'i' at (1) cannot be redefined inside loop beginning at (2)

 read(fileinp,'(I5)') i-49
           1
 Error: Invalid character in name at (1)

我的文件從1到n編號,命名為“ lin * 27-n.dat”(其中n是從1開始的索引),代碼為:

 program deviation
  implicit none

  character(len=15) :: filein,fileout,fileinp
  integer :: row,i,h
  real :: usv,usf,tsv,tsf,diff


  write(*,'(2x,''Input file .......''/)')
  read(*,'(a12)') filein
  write(*,'(2x,''Output file........''/)')
  read(*,'(a12)') fileout
  open(unit = 30,File=filein)
  open(unit = 20,File=fileout)


  fileLoop : do i = 50,52
  fileinp = 'lin*27-'
  read(fileinp,'(I5)') i-49
  open(unit = i,File=fileinp)


   do row = 1,24
    read(30,*) h,usv,tsv
    read(i,*)  h,usf,tsf

     diff = usf - usv

    write(20,*) diff
   enddo
   close(i)
  enddo fileLoop

 end program deviation

我該如何解決? 我不是Fortran的專業人士,所以請不要使用困難的語言,謝謝。

麻煩的是

read(fileinp,'(I5)') i-49

您一定write (如鏈接的示例中所示):此read語句嘗試變量fileinp讀取而不是寫入變量。

就是說,簡單地用write代替可能也不是您所需要的。 這將忽略上一行

fileinp = 'lin*27-'

只需依次設置為“ 1”,“ 2”,“ 3”(帶前導空格)即可。 有點像(假設您打算將*留在那兒)

write(fileinp, '("lin*27-",I1)') i-49

另請注意,使用I1而不是I5格式:可能要避免文件名中的空格。 [當恰好有一位數字時,這是合適的; 泛化時查找Iw.mI0 。]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM