我已经打开了一个文件来写一个数字。我必须在文件末尾写下数字
如何到最后一行写上它?
答案 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)