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>

Antworten auf die Frage(6)

Ihre Antwort auf die Frage