我有一个程序,其中包含一些到终端的输出,例如:
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进行输出。 另外,我猜这里不可能显示出来,因为它真的很大。
答案 0 :(得分:1)
在没有示例的情况下,我们不得不求助于看水晶球。请参见https://stackoverflow.com/help/mcve
无论如何,一种复制您所看到的内容的方法是
program fort6
implicit none
close(6)
write(*,*) 'Progress...'
end program fort6
那么如何避免这种问题呢?我的一个很好的经验法则是总是使用大于10的单元号。如果不需要保持与旧编译器的兼容性,甚至更好,使用NEWUNIT=
指定符打开文件,而不是手动分配单元号。 / p>
答案 1 :(得分:0)
如果您写入未明确与任何内容关联的单元,例如:
program test
implicit none
write (27, *) "Hello"
end program test
它将创建一个名为fort.27
的文件并将其写入。
对于许多(但不是全部)编译器,单元6是标准输出。
对于那些编译器,并且只有那些,语句write(*, *)
和write(6, *)
是相同的。因此,在那些编译器上,关闭单元6将导致进一步将write(*, *)
形式的输出发送到名为fort.6
的文件中。
从您对另一个答案的评论中可以看出,您找到了一个子程序,可以按照这些原则进行操作。但是我还是想把它写成答案。