2012-06-06 2 views
1

Я искал значительно продолжительное время для этого. Кто-нибудь знает, как очистить экран в консольном приложении на языке Fortran? любая помощь будет очень привлекательной!прозрачный экран в Фортране

ответ

4

Fortran, qua Fortran, ничего не знает о таких понятиях, как экраны или клавиатуры или, если на то пошло, компьютеры. Таким образом, нет никакого стандартного языка для очистки экрана от Fortran. Вам нужно будет найти подход, зависящий от платформы.

Большинство компиляторов Fortran имеют некоторый способ сделать это, например, Intel Fortran предоставляет функцию SYSTEM.

+3

+1 Она так долго я не могу вспомнить, когда-либо очистки терминала (или нужно очистить его) ... Боже, я любил ФОРТРАН! – MoonKnight

+0

Я использовал команду командного сценария окон для очистки экрана call system ("cls") – rMaero

1

Это зависит от вашей конкретной системы и компилятора. Нет общего пути. Fortran не знает об определенных аппаратных устройствах, таких как терминальные экраны и принтеры. (Также не большинство других языков). Детали полностью зависят от вашей конкретной системы.

Мой совет - очистить терминал, вызвав соответствующий сценарий через командную строку - но это не приятно. обычно более переносимо записывать вывод в обычный текстовый файл, а затем выполнять соответствующие системные команды для печати этого файла на экран. Таким образом, вы можете манипулировать файлом по своему желанию ...

См. here для simalar вопроса, из которого эти некоторые из вышеприведенного текста были спасены.

2

В Fortran 90/95 ваш лучший вариант - это системная команда, которая является поставляемым поставщиком расширением (т. Е. Не является частью стандарта F90/95, поэтому некоторые непонятные компиляторы Fortran могут не иметь его, но все основные).

$ cat clear.f90 
program 
call system('clear') 
end 
$ gfortran clear.f90 -o clear 
$ ./clear 
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

+0

Какая альтернатива Fortran 2003, на которую вы ссылаетесь? –

+0

http://gcc.gnu.org/onlinedocs/gfortran/EXECUTE_005fCOMMAND_005fLINE.html#EXECUTE_005fCOMMAND_005fLINE –

+0

Как говорится по ссылке, Fortran 2008 и более поздних версий, а не Fortran 2003. –

Смежные вопросы