我有一些将数据写入某些文件的代码,我想遍历此代码以继续打开并写入具有不同参数的文件。但是,无论何时尝试,一旦创建文件(在循环的第一次迭代之后),就会出现错误消息:
程序接收到的信号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一起使用。
答案 0 :(得分:-1)
您在第一个循环iteraton上打开文件,然后尝试在第二个交互中再次打开它。你不能那样做。在循环之前打开文件,执行循环,然后关闭文件。如果您需要循环中的子例程来执行此操作,则可以将文件单元号(此处为12)传递给该例程。