Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I find the number of terminal columns from a C/C++ program? [duplicate]

Possible Duplicate:
Getting terminal width in C?

On Linux and OS X, my shell reports $COLUMNS has the width of the terminal window -- and resizing the window will adjust this shell variable.

But in my C/C++ program, getenv("COLUMNS") doesn't seem to find the variable.

Anybody have an explanation? Or an alternate suggestion for letting my C++ program figure out the width of the terminal it's running in (for some help message word wrapping)?

like image 657
Larry Gritz Avatar asked Jul 11 '11 21:07

Larry Gritz


1 Answers

Perhaps something like this:

#include <sys/ioctl.h>
#include <stdio.h>

int main()
{
    struct winsize w;
    ioctl(0, TIOCGWINSZ, &w);

    printf("lines %d\n", w.ws_row);
    printf("columns %d\n", w.ws_col);
    return 0;
}

Taken straight from: Getting terminal width in C?

like image 76
LainIwakura Avatar answered Sep 27 '22 20:09

LainIwakura