我有一个程序,其中包含一些终端输出,如下所示:
write(*,*) 'Progress...'
当我从命令行或双击(我使用 Windows)运行它时,所有终端输出都会转到 fort.6 文件。 有什么方法可以输出到窗口吗
测试了一个短程序:
program testoutput
write(*,*) 'test1'
write(*,*) 'test2'
write(*,*) 'test3'
write(*,*) 'test4'
write(*,*) 'test5'
write(*,*) 'test6'
write(*,*) 'test7'
write(*,*) 'test8'
write(*,*) 'test9'
write(*,*) 'test10'
end program
它工作正常 - 我在终端中看到输出。 但另一个程序的工作方式不同。我不使用单元 6 进行输出。 另外我想这里不可能展示它,因为它真的很大。
如果没有示例,我们就只能求助于水晶球。请参阅 https://stackoverflow.com/help/mcve
无论如何,重现您所看到的内容的一种方法是
program fort6
implicit none
close(6)
write(*,*) 'Progress...'
end program fort6
那么如何避免此类问题呢?我的经验法则是始终使用大于 10 的单位编号。或者如果您不需要保留与旧编译器的兼容性,则更好,使用
NEWUNIT=
说明符打开文件,而不是手动分配单位编号。
如果您写入尚未与任何内容显式关联的单元,例如:
program test
implicit none
write (27, *) "Hello"
end program test
它将创建一个名为
fort.27
的文件并写入其中。
对于许多(但不是全部)编译器来说,单元 6 是标准输出。
对于这些编译器,并且只有那些,语句
write(*, *)
和write(6, *)
将是相同的。因此,在这些编译器上,关闭单元 6 将导致 write(*, *)
形式的进一步输出发送到名为 fort.6
的文件。
我从您对另一个答案的评论中看到,您已经找到了一个可以执行这些操作的子例程。但我还是想把这个写成答案。