2011-07-11 17 views
5

Olası Çoğalt:
Getting terminal width in C?C/C++ programından terminal sütun sayısını nasıl bulabilirim?

Linux ve OS X'te

, benim kabuk raporları $ KOLONLAR terminal penceresinde genişliğinde - ve pencereyi boyutlandırma bu kabuk değişkeni ayarlar.

Fakat C/C++ programımda getenv ("COLUMNS") değişkeni bulamıyor gibi görünüyor.

Herkesin bir açıklaması var mı? Veya C++ programımın çalışmakta olduğu terminalin genişliğini belirleyen alternatif bir öneri (bazı yardım mesajı sözcükleri için)? Böyle

+3

'$ LINES' ve' $ COLUMNS' * kabuk * değişkenleri değil * ortam * değişkenlerdir. –

cevap

10

Belki bir şey: düz Alındığı

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

: Getting terminal width in C?

+0

BTW bu "taşınabilir" (POSIX tarafından belirtilmemiş) değildir, ancak pratikte hemen hemen her yerde çalışır. –

+0

Benim durumumda harika çalışıyor, teşekkürler! –

+1

Pencerenin yeniden boyutlandırılması ile ilgilenmek istiyorsanız, “SIGWINCH” sinyalini de kullanmalısınız. –