Terminalbreite in C ermitteln?
Ich habe nach einer Möglichkeit gesucht, die Terminalbreite in meinem C-Programm zu ermitteln. Was mir immer wieder einfällt, ist etwas in der Art von:
<code>#include <sys/ioctl.h> #include <stdio.h> int main (void) { struct ttysize ts; ioctl(0, TIOCGSIZE, &ts); printf ("lines %d\n", ts.ts_lines); printf ("columns %d\n", ts.ts_cols); } </code>
Aber jedes Mal, wenn ich das versuche, bekomme ich
<code>austin@:~$ gcc test.c -o test test.c: In function ‘main’: test.c:6: error: storage size of ‘ts’ isn’t known test.c:7: error: ‘TIOCGSIZE’ undeclared (first use in this function) test.c:7: error: (Each undeclared identifier is reported only once test.c:7: error: for each function it appears in.) </code>
Ist dies der beste Weg, oder gibt es einen besseren Weg? Wenn nicht, wie kann ich das zum Laufen bringen?
EDIT: Festcode ist
<code>#include <sys/ioctl.h> #include <stdio.h> int main (void) { struct winsize w; ioctl(0, TIOCGWINSZ, &w); printf ("lines %d\n", w.ws_row); printf ("columns %d\n", w.ws_col); return 0; } </code>