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'

等等瞧!

注意:请注意计算 nbline-N 或 nbline-(N-1) 的方式,具体取决于您想要什么。

于 2013-01-03T13:09:00.240 回答
-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

于 2015-08-19T19:58:15.833 回答