怎么去文件的末尾?

时间:2013-01-02 21:08:33

标签: fortran

我已经打开了一个文件来写一个数字。我必须在文件末尾写下数字

如何到最后一行写上它?

3 个答案:

答案 0 :(得分:5)

您应该使用

打开文件
open(..., position="append",...)

或者,您可以查询文件的大小

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

然后,如果文件是直接访问文件,则可以使用此大小来计算最终记录的记录号。或者,如果访问模式是“流”,则可以使用

write(..., pos=some_integer_variable)

从文件末尾开始写。

答案 1 :(得分: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'

Etvoilà!

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

答案 2 :(得分:-1)

PROGRAM示例 没有隐瞒 INTEGER :: ierr

OPEN(单位= 13,FILE =&#34; ex.dat&#34) CALL FSEEK(13,0,2,ierr) !做什么你想要的

CLOSE(13) END PROGRAM示例

对fseek的调用将转到文件的末尾(像这样使用,检查用法http://docs.oracle.com/cd/E19957-01/805-4942/6j4m3r8ti/index.html