6

数値を書き込むためにファイルを開きました。ファイルの最後に数字を書かないといけないので

最後の行に移動して書き込むにはどうすればよいですか?

4

3 に答える 3

6

でファイルを開く必要があります

open(..., position="append",...)

または、ファイルのサイズを問い合わせることができます

inquire(...,size=some_integer_variable,...)

ファイルが直接アクセス ファイルの場合は、このサイズを使用して最終レコードのレコード番号を計算できます。または、アクセスモードが「ストリーム」の場合は、次を使用できます

write(..., pos=some_integer_variable)

ファイルの最後から書き始めます。

于 2013-01-02T21:22:29.113 に答える
0

私は何年も同じトリックを使用しており、よりエレガントな方法に興味がありますが、次の方法を提案できます。ファイルの行数が増えるにつれて、効率が低下することに注意してください。また、コードのこの部分は、入出力操作専用の洗練されたモジュールになる可能性があることにも注意してください。

ファイルを開く

open(11, file='monfichier')

ファイルの行数を計算する

nbline = 0 ! should have been declared as an integer
do while(.true.)
  read(11,*,iostat=ios) ! ios should have been declared as an integer
  if( ios > 0 ) then
    stop 'problem somewhere'
  else if( ios < 0 ) then ! end of file is reached
    exit
  else
    nbline = nbline + 1
  end if
end do
close(11)

このステップで、変数 nbline に格納された合計行数が得られます。最後の行の前の N 行目に何かを印刷したい場合は、

open(11, file='monfichier')
do i = 1, nbline - N ! see my nota bene at the end of my answer; i and N are integers
  read(11,*)
end do
write(11,*)'hello world'

ほら!

NB : nbline-N または nbline-(N-1) の数え方には注意してください。正確に何を求めているかによって異なります。

于 2013-01-03T13:09:00.240 に答える