L'obtention de terminal largeur en C?

J'ai été à la recherche d'un moyen d'obtenir le terminal de la largeur de l'intérieur de mon programme C. Ce que j'ai de garder à venir avec quelque chose le long des lignes de:

#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);
}

Mais chaque fois que j'essaie, que je reçois

austin@:~$ gcc test.c -o test
test.c: In function main’:
test.c:6: error: storage size of ts isnt 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.)

Est-ce la meilleure façon de le faire, ou est-il un meilleur moyen? Si non, comment puis-je obtenir que cela fonctionne?

EDIT: code fixe est

#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;
}
  • aucune des réponses proposées n'est plus de la moitié correcte.
InformationsquelleAutor austin | 2009-06-21