ncurses终端大小

ncurses终端大小,c,ncurses,C,Ncurses,如何找到ncurses应用程序的终端宽度和高度?我相信 此外,这可能有助于 如何使用SCR\u H和SCR\u W?我正在使用以下代码: struct winsize size; if (ioctl(0, TIOCGWINSZ, (char *) &size) < 0) printf("TIOCGWINSZ error"); printf("%d rows, %d columns\n", size.ws_row, size.ws_col); struct-winsize;

如何找到ncurses应用程序的终端宽度和高度?

我相信

此外,这可能有助于


如何使用
SCR\u H
SCR\u W

我正在使用以下代码:

struct winsize size;
if (ioctl(0, TIOCGWINSZ, (char *) &size) < 0)
    printf("TIOCGWINSZ error");
printf("%d rows, %d columns\n", size.ws_row, size.ws_col);
struct-winsize;
if(ioctl(0,TIOCGWINSZ,(char*)和size)<0)
printf(“TIOCGWINSZ错误”);
printf(“%d行,%d列\n”,size.ws\u行,size.ws\u列);

ncurses应用程序通常处理
SIGWINCH
,并使用
ioctl
TIOCGWINSZ
获取系统的屏幕大小概念。可由环境变量和覆盖的(请参阅)

鉴于此,当
wgetch
返回
KEY\u RESIZE
(响应
SIGWINCH
)以给出
stdscr
(代表整个终端的标准屏幕)的大小时,ncurses全局变量和作为副作用进行更新

当然,您可以使用and来获得窗口的x坐标和y坐标的一个或两个极限。只有最后一个是标准的(并且是便携式的)

进一步阅读:

  • (课程常见问题)
变量COLS、line在initscr()之后初始化为屏幕大小

资料来源:


但我不确定它们是否会在调整大小时得到更新。

另外:不要忘记,某些操作系统在调整终端大小时会收到进程接收到的信号。
initscr()
将清除屏幕。是否有任何方法可以获取终端大小而不清除屏幕?不确定这是否正确,因为
y
&
x
不是指针,因此函数不会向它们复制任何内容。从
mkssoftware.com
:“
getbegyx()和getmaxyx()宏存储指定窗口的当前开始坐标和大小。
”@afr0ck正如您的报价所述,这些都是宏,因此
y
x
不需要作为指针。宏直接作用于给定的变量,不需要复制赋值或指针。@DylanJ,不需要在问题中给出答案,尤其是在你接受答案后。这不是很自然。