Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Konsolengröße (Zeilen, Spalten) von C aus

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.10.2005, 23:32 Uhr
Bruder Leif
dances with systems
(Operator)


Moin moin!

Frage am Rande: Wie kann ich von C aus unter Linux feststellen, wie viele Zeilen/Spalten die Konsole besitzt, unter der mein Programm läuft? 80/25 ist schön und gut, aber ein "bisschen" vergrößerter GNOME-Terminal und schon siehts besch... aus...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.10.2005, 00:41 Uhr
Pablo
Supertux
(Operator)


Mit dem Befehl stty size bekommt man das. Ob es eine Funktion in C dafür gibt, weiß ich nicht, aber so könntest du es machen:


C++:
/* tty.c */

#include <stdio.h>

int main(void)
{
        FILE* f;

        int x=0, y=0;

        f = popen("stty size", "r");

        if(!f)
        {
                fprintf(stderr, "cannot execute stty\n");
                return 1;
        }

        fscanf(f, "%d %d", &x, &y);

        printf("%dx%d\n", x, y);

        pclose(f);
        return 0;
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 24.10.2005 um 00:42 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.10.2005, 08:37 Uhr
virtual
Sexiest Bit alive
(Operator)


Du kannst Auch einfach ein ioctl auf das Dateihandle 1 machen mit dem Code TIOCGWINSZ.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.10.2005, 11:12 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Danke schön! Dachte mir schon, dass es nix "einfaches" dafür gibt... aber _damit_ kann ich leben
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.10.2005, 11:43 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von Bruder Leif:
Dachte mir schon, dass es nix "einfaches" dafür gibt...

Na komm schon, jetzt stellst Du dich aber ein wenig an!

C++:
#include <termios.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <stdio.h>

int main(int argc,char **argv)
{
  struct winsize ws;

  if (ioctl(1,TIOCGWINSZ,&ws)!=0) { // Nimmt an, daß Descriptor 1 mit einem tty verbunden ist
     perror("ioctl(1,TIOCGWINSZ)");
     return 1;
  }
  printf("rows %i\n",ws.ws_row);
  printf("cols %i\n",ws.ws_col);
  return 0;
}


Was ist denn an einem Funktionsaufruf schwer?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 24.10.2005 um 11:45 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.10.2005, 12:24 Uhr
Bruder Leif
dances with systems
(Operator)


*grins* Wie gesagt, damit kann ich leben Dachte mir, vielleicht ist ja irgendwo ein getRows() / getCols() oder so versteckt Irgendwas leicht zu merkendes. Jetzt nehm ich die ioctl()-Version für "ernsthafte" Programme (weil popen == system), und die stty-Lösung zum Merken
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: