Ho cercato un modo per ottenere la larghezza del terminale all'interno del mio programma C. Quello che continuo a venire con è qualcosa sulla falsariga di:Ottenere la larghezza del terminale in C?
#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);
}
Ma ogni volta che provo che ricevo
[email protected]:~$ 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.)
È questo il modo migliore per fare questo, o c'è un modo migliore? Se no, come posso farlo funzionare?
EDIT: fissa il codice è
#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;
}
sì ma il termine larghezza non è una variabile ambientale, è statico al termine. – austin
Non fornisce la dimensione del terminale _current_, se qualcuno ridimensiona il terminale durante l'esecuzione del programma. –
sì, stava aggiungendo che :) –