[英]Reading an ASCII File in Fortran
我有個問題。 我的桌面上有一個充滿數字的ASCII文件,但是我需要知道如何使用FORTRAN讀取ASCII文件。 您能給我看一個例子,說明它是如何完成的或者是什么命令?
您沒有提供很多細節,因此在這里我將做一些假設。 假設您的文件包含3列浮點數,即
1.2345 -4.222e7 2.229
77.222 77e7 50
...
如果您只想讀取這些數字而不將其存儲在數組中,則可以直接完成以下操作:
integer :: unit
real :: a,b,c
unit = 20
open(unit,"foo.txt",status="old",action="read")
do
read(unit,*,end=1) a, b, c
write(*,*) "I got", a, b, c
end do
1 close(unit)
但是,如果要將這些數字存儲為數組,則首先需要分配適當的空間量,為此您需要知道行數。 遺憾的是,這需要對文件進行初步檢查,因為Fortran不會提供不斷增長的陣列,而且自己實施替換操作很不方便。 假設您使用的是fortran 90或更高版本,則看起來像這樣:
integer :: unit, i, n
real, allocatable :: data(:,:)
unit = 20
open(unit,"foo.txt",status="old",action="read")
n = 0
do
read(unit,*,end=1)
n = n+1
end do
1 rewind(unit)
allocate(data(n,3))
do i = 1, n
read(unit,*) data(i,:)
end do
close(unit)
單位編號只是一些用戶選擇的唯一編號。 當心一些低數字具有預定義的含義。 定義類似getlun()的函數很常見,該函數將為您提供一個免費的單元號。 快速的Google搜索產生了以下內容: http : //ftp.cac.psu.edu/pub/ger/fortran/hdk/getlun.f90 。 如果您有足夠新的編譯器,則可以使用open(newunit = unit,...),它將自動為變量“ unit”分配一個空閑的單元號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.