在Fortran清除屏幕

时间:2012-06-06 13:22:33

标签: windows fortran

我一直在寻找相当长的时间。有谁知道如何在Fortran语言的控制台应用程序中清除屏幕? 任何帮助都会非常有用!

7 个答案:

答案 0 :(得分:4)

Fortran, qua Fortran,对屏幕或键盘或计算机等概念一无所知。因此,没有语言标准的清除Fortran屏幕的方法。您将不得不找到一些与平台相关的方法。

大多数Fortran编译器都有一些方法可以做到这一点,例如Intel Fortran提供SYSTEM功能。

答案 1 :(得分:2)

在Fortran 90/95中,您最好的选择是系统命令,它是供应商提供的扩展(即,不是F90 / 95标准的一部分,因此一些不起眼的Fortran编译器可能没有它,但所有主要编译器都没有。)

$ cat clear.f90
program
call system('clear')
end 
$ gfortran clear.f90 -o clear
$ ./clear 

答案 2 :(得分:1)

这取决于您的特定系统和编译器。没有一般的方法。 Fortran不了解终端屏幕和打印机等特定硬件设备。 (大多数其他语言都没有)。细节完全取决于您的特定系统。

我的建议是通过命令行调用相关脚本来清除终端 - 但这并不好。将输出写入普通文本文件然后执行适当的系统命令以将该文件打印到屏幕通常更加便携。这样你就可以按照自己的意愿操作文件......

请参阅here了解上述某些上述文字的simalar问题。

答案 3 :(得分:1)

与其他人相反,我不会调用SYSTEM()(标准的Fortran 2008替代版本为execute_command_line()),但我会打印正确的ANSI转义码http://en.wikipedia.org/wiki/ANSI_escape_code

print *, achar(27)//"[2J"

这比调用SYSTEM()要快得多。

这适用于典型的Linux终端,但不适用于MS Windows终端。

另一个更实用的参考如何使用转义码是http://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html

答案 4 :(得分:1)

在Fortran ACHAR(N)中,返回N的ASCII,所以我的首选方法是:

WRITE(*,'(2f15.9,A5)',advance='no') float1,float2,ACHAR(13)

ACHAR(13)在Python中返回回车符\r。因此,在打印后,它将光标移至可以覆盖的行首。

退出循环后,您可以使用CALL SYSTEM('clear')清洁屏幕。

这很有用,因为CALL SYSTEM('clear')速度较慢并且占用大量CPU,您可以通过将上述方法替换为

来进行检查
WRITE(*,'(2f15.9)',advance='no') float1,float2;CALL SYSTEM('clear')

并检查循环所花费的时间差。

答案 5 :(得分:0)

这适用于FTN95

program
call system('CLS')
end 

答案 6 :(得分:0)

我发现了另一种清除UNIX之类的系统中屏幕的方法,方法是打印clear命令的输出
(来自clear命令的手册,该手册指出您可以将输出写入文件,然后将{{ 1}}清除屏幕)

更好的方法是cat并在打印语句中使用文件中的字符

尽管两者都做同样的事情,但是调用SYSTEM(“ foo”)的速度比直接打印这些字符要慢(100倍以上)

例如:

clear > temp.txt

此程序需要 3.1到3.4 秒之间的任何时间。

但是如果我不直接调用系统,则直接打印这样的字符:

program clear
    implicit none
    INTEGER::i
    do i = 1, 1000
        print *, "Test"
        call system("clear")
    enddo
end program clear

这将产生完全相同的结果,但是需要花费 0.008至0.012 秒(8至12毫秒)之间的任何时间

实际上,运行第二个循环100,000比program clear implicit none INTEGER::i do i = 1, 1000 print *, "Test" print *, "[H[2J[3J" enddo end program clear 快1000倍

编辑:请勿从此处复制粘贴,否则将不起作用,(字符已在StackOverflow上替换)

只需使用CALL SYSTEM("clear")并将文件内容复制到打印语句中



实际代码的屏幕截图(来自预览):
screenshot
我猜不支持这些字符,它们在答案中消失了(它们在预览中工作正常)