我在Windows7专业版机器上使用Classic Eclipse 4.2.2和Photran插件和cygwin的gfortran编译器。如果我删除下面的'call flush(6)‘,程序不会写入控制台,直到从std中读取:
program mult1
implicit none
integer :: i,j,k
!
!
! This program just multiplies two integers
! together.
!
!
write(*,*) 'Enter i,j: '
call flush(6)
read(*,*)i,j
k = i*j
write(*,*) 'The product is ', k
stop
end program mult1有什么想法或解决方法吗?
发布于 2013-06-18 00:05:48
我通过阻止所有缓冲解决了这个问题。这不是一个完美的解决方案(缓冲一些输出而不是其他输出会很好),但它解决了我的问题-也就是说,不必每次我写(,)时都调用flush(6)。
为了防止gfortran的所有缓冲(注意:它是特定于编译器的),
如果您正在使用PHOTRAN (用于Fortran的eclipse插件),则必须执行以下操作:
发布于 2013-06-06 01:02:14
除非给出了明确的指示,否则FORTRAN代码会在“感觉像这样的时候”,或者当系统感觉允许的时候,写到输出。这一切都是关于缓冲的。这里对flush的调用正是出于这个原因:出于显而易见的原因,编写器想要在那里强制输出。然而,我从来没有见过在这种情况下需要刷新的代码。我会尝试用print *,替换write(*,*)。
ANother的可能性可能是编译你的代码,所以输出缓冲是不允许的。如果存在相应的标志,请查看手册页。
https://stackoverflow.com/questions/16942059
复制相似问题