如何使用plain c在Windows下的控制台窗口中检查ymax和xmax?在c中获取窗口的终端大小?
有这段代码的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);
}
现在我不知道我该怎么做同样的窗口。我试过winioctl.h
,但它没有定义struct winsize
,也没有其他名称相似的其他人。
任何提示?谢谢。
PS。在linux中,您还可以使用getenv("LINES");
找到控制台大小。在windows下有没有类似的变量?
PPS。此外,总是有ncurses.h
,我认为这两个系统都可以工作,但是由于与其他库的冲突,我避免了这个问题。
PPPS。这里的问题Getting terminal width in C?有很多提示,所以不需要重复说明。
我很短的时间来测试它,但它看起来像这是问题的正确答案。你介意指出这个答案与当前接受的答案之间的区别,它显示了缓冲区大小吗?谢谢! –
@DrBeco在大多数情况下,答案中的缓冲区大小和此答案中提到的显示窗口具有相同的宽度,但这不是必需的。但是,正如您所注意到的,缓冲区和窗口可以并且通常具有不同的高度 - 这是为了回滚Windows控制台会话而提供的功能。我觉得用大缓冲区来考虑是最容易的,它有一个较小的视口(显示)窗口,可以查看主缓冲区的任何部分。 – dgnuff