Cómo verificar ymax y xmax en una ventana de la consola, en Windows, usando plain c?¿Cómo obtener el tamaño del terminal en c para Windows?
No es este pedazo de código para 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);
}
Ahora me pregunto cómo puedo hacer lo mismo para las ventanas. Intenté winioctl.h
pero no define struct winsize
ni ningún otro con un nombre similar.
¿Algún consejo? Gracias.
PS. En Linux también puede encontrar el tamaño de la consola usando getenv("LINES");
. ¿Hay una variable similar en Windows?
PPS. Además, siempre hay ncurses.h
, que supongo que funcionan en ambos sistemas, pero lo estoy evitando debido a conflictos con otras bibliotecas que tengo.
PPPS. Esta pregunta aquí Getting terminal width in C? tiene muchos consejos, por lo que no es necesario repetir eso.
Tengo poco tiempo para probarlo, pero parece que esta es la respuesta correcta a la pregunta. ¿Te importaría señalar la diferencia entre esta respuesta y la actualmente aceptada que muestra el tamaño del búfer? ¡Gracias! –
@DrBeco En la mayoría de los casos, el tamaño del búfer de su respuesta y la ventana de visualización mencionada en esta respuesta tienen el mismo ancho, aunque esto no es necesario. Sin embargo, como se observa, el búfer y las ventanas pueden tener diferentes alturas y con frecuencia tienen diferentes alturas: esto es lo que permite desplazarse hacia atrás en una sesión de consola de Windows. Me resulta más fácil pensar en términos de un gran buffer, con una ventana más pequeña (visualización) que puede mirar cualquier sección del buffer principal. – dgnuff