我打开了一个文件来写一个数字。我必须在文件末尾写数字所以
怎么写到最后一行呢?
你应该打开文件
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'
等等瞧!
注意:请注意计算 nbline-N 或 nbline-(N-1) 的方式,具体取决于您想要什么。
程序示例 IMPLICIT NONE INTEGER :: ierr
OPEN(UNIT=13,FILE="ex.dat") 调用 FSEEK(13, 0, 2, ierr) !做任何你想做的事
CLOSE(13) 结束程序示例
对 fseek 的调用转到文件的末尾(这样使用,检查用法http://docs.oracle.com/cd/E19957-01/805-4942/6j4m3r8ti/index.html)