8

私はFortran(90)で書いています。私のプログラムはfile1を読み取り、そのすべての行で何かを実行し、結果をfile2に書き込む必要があります。しかし、問題-file1の最初の行に不要な情報がいくつかあります。

Fortranを使用して入力ファイルから1行スキップするにはどうすればよいですか?

コード:

open (18, file='m3dv.dat')
open (19, file='m3dv2.dat')
do
  read(18,*) x
  tmp = sqrt(x**2 + 1)
  write(19, *) tmp
end do

最初の行はテキストと数字の組み合わせです。

4

3 に答える 3

13

あなたはすでに解決策を見つけましたが、ダミー変数さえ必要ないことを追加したかっただけです。ループに入る前の空白の読み取りステートメントだけで十分です。

open(18, file='m3dv.dat')
read(18,*)
do
    ...

他の答えは正しいですが、これによりコードの簡潔さと(したがって)可読性が向上する可能性があります。

于 2011-04-11T21:16:59.837 に答える
1

最初の行にあるものを「ダミー」変数に読み取るdoループの前に、読み取り操作を実行します。

program linereadtest
implicit none
character (LEN=75) ::firstline
integer :: temp,n
    !
    !
    !
open(18,file='linereadtest.txt')
read(18,*) firstline
do n=1,4
   read(18,'(i3)') temp
   write(*,*) temp
end do
stop
end program linereadtest

データファイル:

これは、10個が存在しない1000個のテストです。

50
100
34
566

!行と数字の間のスペースを無視してください。フォーマットできません。

于 2011-04-10T12:24:33.510 に答える
0
open (18, file='m3dv.dat')
open (19, file='m3dv2.dat')
read(18,*) x // <---

do
  read(18,*) x
  tmp = sqrt(x**2 + 1)
  write(19, *) tmp
end do

追加された行は、最初の行を読み取り、最初の反復で2番目の行で上書きします。

于 2011-04-10T12:23:53.777 に答える