¿Obtener ancho de terminal en C?
He estado buscando una manera de obtener el ancho del terminal desde dentro de mi programa C. Lo que se me ocurre es algo como:
<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>
Pero cada vez que intento eso me sale.
<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>
¿Es esta la mejor manera de hacer esto, o hay una mejor manera? Si no, ¿cómo puedo hacer que esto funcione?
EDITAR: el código fijo es
<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>