ncurses终端大小
如何找到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;
如何使用
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坐标的一个或两个极限。只有最后一个是标准的(并且是便携式的)
进一步阅读:
- (课程常见问题)
但我不确定它们是否会在调整大小时得到更新。另外:不要忘记,某些操作系统在调整终端大小时会收到进程接收到的信号。
initscr()
将清除屏幕。是否有任何方法可以获取终端大小而不清除屏幕?不确定这是否正确,因为y
&x
不是指针,因此函数不会向它们复制任何内容。从mkssoftware.com
:“getbegyx()和getmaxyx()宏存储指定窗口的当前开始坐标和大小。
”@afr0ck正如您的报价所述,这些都是宏,因此y
和x
不需要作为指针。宏直接作用于给定的变量,不需要复制赋值或指针。@DylanJ,不需要在问题中给出答案,尤其是在你接受答案后。这不是很自然。