Jak sprawdzić jeax i xmax w oknie konsoli, pod Windows, używając zwykłego c?Uzyskiwanie rozmiaru terminala wc dla systemu Windows?
Jest to kawałek kodu dla Linux:
#include <stdio.h>
#include <sys/ioctl.h>
int main (void)
{
struct winsize max;
ioctl(0, TIOCGWINSZ , &max);
printf ("lines %d\n", max.ws_row);
printf ("columns %d\n", max.ws_col);
}
Teraz zastanawiam się, jak mogę zrobić to samo dla okien. Próbowałem winioctl.h
, ale nie definiuje ona struct winsize
ani żadnego innego o podobnej nazwie.
Jakieś wskazówki? Dzięki.
PS. W systemie Linux można również znaleźć rozmiar konsoli za pomocą getenv("LINES");
. Czy jest podobna zmienna pod oknami?
PPS. Poza tym zawsze jest ncurses.h
, co przypuszczam, że działa oba systemy, ale unikam go z powodu konfliktów z innymi bibliotekami, które mam.
PPPS. To pytanie tutaj Getting terminal width in C? ma wiele wskazówek, więc nie trzeba tego powtarzać.
Mam mało czasu, aby go przetestować, ale wygląda na to, że jest to właściwa odpowiedź na to pytanie. Czy mógłbyś wskazać różnicę między tą odpowiedzią a aktualnie akceptowaną, która pokazuje rozmiar bufora? Dzięki! –
@DrBeco W większości przypadków rozmiar bufora z odpowiedzi oraz okno wyświetlania wymienione w tej odpowiedzi mają tę samą szerokość, chociaż nie jest to wymagane. Jednak, jak zauważyłeś, bufor i okna mogą i często mają różne wysokości - to właśnie zapewnia możliwość przewijania kopii zapasowej sesji konsoli Windows. Uważam, że najłatwiej jest myśleć w kategoriach dużego bufora, z mniejszym oknem podglądu (wyświetlania), które może wyglądać w dowolnej sekcji głównego bufora. – dgnuff