2016-07-11 3 views
0

Gibt es eine Möglichkeit, die Anschlusslinienbreite in Fortran (90) neben dem Aufruf tput cols zu erhalten, der, wenn möglich, plattformübergreifend ist?Wie kann ich die Terminalbreite in Fortran bekommen?

Ich benutze nur gfortran, also ist es ausreichend, wenn es mit diesem Compiler funktioniert.

+0

Hallo, willkommen bei StackOverflow. Sie sollten Tags in die Frage nicht setzen, wenn es kein natürlicher Teil davon ist http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles –

+1

Sie sind viel besser Verwendung von Fortran 2008-Funktionen, da sie die Interaktion mit dem Betriebssystem beinhalten (wie 'execute_command_line()'). Fortran 90 ist zu alt. –

+0

Wusste das nicht, danke für die Bearbeitung. Beinhaltet Fortran 2008 so etwas wie Terminal-Breite oder muss ich je nach Betriebssystem unterschiedliche Befehle aufrufen? Edit: versehentlich gedrückt Eingabe zu früh –

Antwort

1

Die Terminal-/Konsolenfunktionalität ist immer eine systemabhängige Funktion. Das bedeutet, dass die Terminalbreite für Unix- und Windows-Systeme unterschiedlich ist. Eine der Bibliotheken, die Ihnen helfen kann, ist ncurses, in C geschrieben. Es gibt einige Fortran-Schnittstellen für diese Bibliothek, wie this verwendet Fortran 2003.

Wenn diese Bibliothek Ihren Anforderungen entspricht, sehen Sie sich die Integer-Variablen LINES und COLS an, die in der Größe des Bildschirms angezeigt werden.

In Fortran-Schnittstelle bereits erwähnt, gibt es getmaxyx Unterprogramm:

subroutine getmaxyx(win,y,x) bind(C, name='macro_getmaxyx') 
    use iso_c_binding 
    use ncurses_types 
    type (C_PTR), value :: win 
    integer(C_INT) :: y,x 
end subroutine 

es die Größe des angegebenen Fensters speichert.

+0

Danke, das war die Art von Antwort, nach der ich gesucht habe. Die Bibliothek existiert leider nicht für Windows, aber das klingt zumindest unter Linux viel zuverlässiger als das Aufrufen von 'tput-Spalten' oder das Abrufen von Umgebungsvariablen. –

Verwandte Themen