curses
有关curses屏幕的输出
除了printw和refresh两个与屏幕输出密切相关的函数以外,还有一些基本的输出有关的函数:
函数 | 描述 |
---|---|
int addch(const chtype char_to_add) | 在光标位置添加字符 |
int addchstr(chtype *const string_to_add) | 在光标位置添加字符串 |
int printw(char *format, …) | 以和printf一样的格式化方式在光标位置添加字符串 |
int refresh(void) | 刷新物理屏幕 |
int box(WINDOW *win_ptr, chtype vertical_char, chtype hprizontal_char) | 围绕一个窗口绘制方框 |
int insch(chtype char_to_insert) | 在头部插入一个字符,已有字符右移 |
int insertln(void) | 插入一个空白行,已有行下移 |
int delch(void) | 与insch作用相反 |
int deleteln(void) | 与insertln作用相反 |
int beep(void) | 蜂鸣器发声 |
int flash(void) | 屏幕闪烁 |
其中出现了WINDOW和chtype两种在curses库中定义的类型。
对于curses程序,有一个窗口的概念,其要求是无论何时都必须有一个父窗口占据了整个终端屏幕;父窗口可以用于许多子窗口,子窗口的大小则允许小于等于终端屏幕,且窗口之间是可以重叠的(这与windows窗口的概念差不多)。其中窗口在程序中被定义为WINDOW类型,WINDOW类型有一个特例被称为stdscr结构(标准窗口,就是第一个curses窗口)。要注意的地方是,stdscr对应的是逻辑屏幕,curses还有一个结构curscr对应于物理屏幕。
initscr函数的原型为WINDOW *initscr(void)
,即初始化屏幕后会返回一个指向stdscr窗口的指针,在一些curses需要使用WINDOW类型的指针做一些事情,比如box函数能在某个确定的窗口画一个框。
至于chtype就是一个比基本字符类型char位数更多的字符类型,在linux一般就是unsigned long 。
对于文本模式的终端屏幕,就是像ubuntu系统按 Ctrl+Alt+F1~F6 进入的虚拟终端,初始化后的第一个窗口就会占据整个屏幕设备;而在图形化界面中,由于伪终端 (Ubuntu一般按Ctrl+Alt+T) 本身不会占据整个屏幕设备,所以第一个curses窗口也是不会占据整个设备的,仅仅占据伪终端的整个窗口。
总之就是占据整个虚拟终端/伪终端/终端的窗口,而不一定是整个实际的屏幕设备。
开头表格中的函数只要自己上一遍就能明白了,这里就演示一下box函数:
#include <unistd.h>
#include <stdlib.h>
#include <curses.h>
int main(int argc, char **argv)
{
WINDOW *screen = initscr();
box(screen, ACS_VLINE, ACS_HLINE);
refresh();
sleep(12);
endwin();
exit(EXIT_SUCCESS);
}
关于box函数:
第一个参数就是指定的窗口,这里只有一个父窗口所以只能指定父窗口了;vertical是竖直的意思,hprizontal是水平的意思,很明显第二各参数是竖直打印用的字符,第三个参数是水平打印用的字符 。
在curses中还提供了打印漂亮的竖直线和水平线的定义,分别是ACS_VLINE和ACS_HLINE 。
运行结果:
相关阅读
相较于不具备正确线索打分能力的公司,有效线索打分的公司线索合格率平均高达192%,这也就意味着市场输出的高价值线索提高了192%。68
我是第三次拆自己的DV6了所以拆的感觉游刃有余 套路明确。只要大家看图慢慢来 拆开不成问题的 我会在图上进行详细的文字说明希望
这里是《神经网络与机器学习》第三章的笔记… 最小均方算法,即Least-Mean-Square,LMS。其提出受到感知机的启发,用的跟感知机一样的
http://www.cnblogs.com/ioleon13/archive/2010/03/02/1676621.html https://blog.csdn.net/HouQi02/article/details/52205311
import numpy as np #1、创建一个长度为10的数组,数组的值都是0 np.zeros(10,dtype=int) #2、创建一个3x5的浮点型数组,数组的值