打开已存在的文件时无效的内存引用

时间:2019-06-28 11:25:24

标签: fortran codeblocks gfortran

我有一些将数据写入某些文件的代码,我想遍历此代码以继续打开并写入具有不同参数的文件。但是,无论何时尝试,一旦创建文件(在循环的第一次迭代之后),就会出现错误消息:

  

程序接收到的信号SIGSEGV:分段错误-无效的内存引用。

代码看起来像这样:

program main
! premable here
DO a=1,10

call something(a, b, c)

END DO

contains

SUBROUTINE something(a, b, c)
!premable + data manipulation

open(12, FILE = 'file.name', STATUS='UNKNOWN')            ! the problem occurs here for 
                                                          ! the second iteration of the loop
                                                          ! in the main
DO i=.... ! general loop for extracting values from array
write(12, '(4F16.12)') b(:, i)
END DO
close(12)

END SUBROUTINE something


end program main

我尝试使用STATUS='OLD'而不是'UNKNOWN'使用预先创建的空文件,但这也不起作用(实际上,此循环甚至无法完成第一次迭代)。 / p>

我正在将GNU Fortran编译器与Windows和CODE :: BLOCKS一起使用。

1 个答案:

答案 0 :(得分:-1)

您在第一个循环iteraton上打开文件,然后尝试在第二个交互中再次打开它。你不能那样做。在循环之前打开文件,执行循环,然后关闭文件。如果您需要循环中的子例程来执行此操作,则可以将文件单元号(此处为12)传递给该例程。