数値を書き込むためにファイルを開きました。ファイルの最後に数字を書かないといけないので
最後の行に移動して書き込むにはどうすればよいですか?
でファイルを開く必要があります
open(..., position="append",...)
または、ファイルのサイズを問い合わせることができます
inquire(...,size=some_integer_variable,...)
ファイルが直接アクセス ファイルの場合は、このサイズを使用して最終レコードのレコード番号を計算できます。または、アクセスモードが「ストリーム」の場合は、次を使用できます
write(..., pos=some_integer_variable)
ファイルの最後から書き始めます。
私は何年も同じトリックを使用しており、よりエレガントな方法に興味がありますが、次の方法を提案できます。ファイルの行数が増えるにつれて、効率が低下することに注意してください。また、コードのこの部分は、入出力操作専用の洗練されたモジュールになる可能性があることにも注意してください。
ファイルを開く
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) の数え方には注意してください。正確に何を求めているかによって異なります。