精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 ncurses 在你的 Linux 屏幕上定位文本

系統(tǒng) Linux
使用 ncurses 在 Linux 屏幕上的特定位置放置文本,可以帶來更友好的用戶界面體驗(yàn)。

使用 ncurses 在 Linux 屏幕上的特定位置放置文本,可以帶來更友好的用戶界面體驗(yàn)。

大多數(shù)的 Linux 實(shí)用程序僅僅只在屏幕的底部滾動(dòng)文本。如果你想在屏幕中放置你的文本,例如一個(gè)游戲或者一個(gè)數(shù)據(jù)展示,你可以試試 ncurses。

curses 是一個(gè)舊的 Unix 庫,它可以在文本終端界面控制光標(biāo)。curses 的名稱就來自于術(shù)語 “光標(biāo)控制cursor control”。多年以后,其他人編寫了新的 curses 版本用來添加新的功能,新版本被叫做 “new curses” 或者 “ncurses”。你可以在每個(gè)流行的 Linux 發(fā)行版中找到 ncurses。盡管默認(rèn)情況下可能未安裝開發(fā)庫、頭文件和文檔。例如,在 Fedora 上,你需要使用以下命令安裝 ncurses-devel 包:

  1. $ sudo dnf install ncurses-devel

在程序中使用 ncurses

要在屏幕上直接尋址,你首先需要初始化 ncurses 庫。大部分程序會(huì)通過以下三行來做到這一點(diǎn):

  • initscr():初始化窗口對象和 ncurses 代碼,返回代表整個(gè)屏幕的窗口對象
  • cbreak():禁用緩沖并使鍵入的輸入立即可用
  • noecho():關(guān)閉回顯,因此用戶輸入不會(huì)顯示在屏幕上

這些函數(shù)定義在 curses.h 頭文件中,你需要在你的程序中通過以下方式將其包含進(jìn)來:

  1. #include <curses.h>

初始化終端后,你可以自由使用任何 ncurses 函數(shù),我們將在示例程序中探討其中的一些函數(shù)。

當(dāng)你使用完 ncurses 并想返回到常規(guī)終端模式下時(shí),使用 endwin() 重置一切。此命令可以重置任何屏幕顏色,將光標(biāo)移動(dòng)到屏幕的左下角,并使光標(biāo)可見。通常在退出程序之前執(zhí)行此操作。

在屏幕上尋址

關(guān)于 ncurses 首先需要知道的是屏幕的坐標(biāo)分為行和列,左上角的是 0,0 點(diǎn)。ncurses 定義了兩個(gè)全局變量來幫助你識別屏幕:LINES 是屏幕的行數(shù),COLS 是屏幕的列數(shù)。屏幕右下角的位置是 LINES-1,COLS-1

例如,如果你想要移動(dòng)光標(biāo)到第 10 行和第 30 列,你可以使用 move() 函數(shù),移動(dòng)到此坐標(biāo):

  1. move(10, 30);

之后顯示的任何文本都將從屏幕的該位置開始。要顯示單個(gè)字符,請對單個(gè)字符使用 addch(c) 函數(shù)。要顯示字符串,將對字符串使用 addstr(s) 函數(shù)。對于類似于 printf 的格式化輸出,請使用帶有常用選項(xiàng)的 printw(fmt, ...)。

移動(dòng)到屏幕指定位置和顯示文本是一件很常見的事情,ncurses 提供了同時(shí)執(zhí)行這兩項(xiàng)操作的快捷方式。mvaddch(row, col, c) 函數(shù)將在屏幕第 row 行,第 col 列的位置顯示一個(gè)字符。而 mvaddstr(row, col, s) 函數(shù)將在屏幕第 row 行,第 col 列的位置顯示一個(gè)字符串。舉個(gè)更直接的例子,在程序中使用 mvaddstr(10, 30, "Welcome to ncurses"); 函數(shù)將從屏幕的第 10 行和第 30 列開始顯示文本 Welcome to ncurses。使用 mvaddch(0, 0, '+') 函數(shù)將在屏幕的左上角第 0 行和第 0 列處顯示一個(gè)加號(+)。

在終端屏幕上繪制文本會(huì)對某些系統(tǒng)產(chǎn)生性能影響,尤其是在較舊的硬件終端上。因此 ncurses 允許你“堆疊”一堆文本以顯示在屏幕上,然后使用 refresh() 函數(shù)使所有這些更改對用戶可見。

讓我們來看一個(gè)將以上所有內(nèi)容整合在一起的簡單示例:

  1. #include <curses.h>
  2.  
  3. int
  4. main()
  5. {
  6.   initscr();
  7.   cbreak();
  8.   noecho();
  9.  
  10.   mvaddch(0, 0, '+');
  11.   mvaddch(LINES - 1, 0, '-');
  12.   mvaddstr(10, 30, "press any key to quit");
  13.   refresh();
  14.  
  15.   getch();
  16.  
  17.   endwin();
  18. }

程序的開始初始化了一個(gè)終端窗口,然后在屏幕的左上角打印了一個(gè)加號,在左下角打印了一個(gè)減號,在第 10 行和第 30 列打印了 press any key to quit 文本。程序通過使用 getch() 函數(shù)接收了鍵盤輸入的單個(gè)字符,接著,使用 endwin() 函數(shù)在程序完全退出前重置了終端。

getch() 是一個(gè)很有用的函數(shù),你可以使用它來做很多事情。我經(jīng)常使用它在我退出程序前用來暫停。與大多數(shù) ncurses 函數(shù)一樣,還有一個(gè)名為 mvgetch(row, col) 的 getch() 版本,用于在等待字符輸入之前移動(dòng)到屏幕位置的第 row 行,第 col 列。

使用 ncurses 編譯

如果你嘗試以通常的方式編譯該示例程序,例如 gcc pause.c,你可能會(huì)從鏈接器中獲得大量錯(cuò)誤列表。那是因?yàn)?GNU C 編譯器不會(huì)自動(dòng)鏈接 ncurses 庫。相反,你需要使用 -l ncurses 命令行選項(xiàng)加載它以進(jìn)行鏈接。

  1. $ gcc -o pause pause.c -lncurses

運(yùn)行新程序?qū)⒋蛴∫粭l簡單的 press any key to quit消息,該消息差不多位于屏幕中央: 

 

圖 1:程序中居中的 “press any key to quit” 消息。

使用 ncurses 構(gòu)建更好的程序

探索 ncurses 庫函數(shù)以了解在屏幕上顯示文本的其它方法。你可以在 ncurses 的手冊頁中找到所有 ncurses 函數(shù)的列表。這給出了 ncurses 的一般概述,并提供了不同 ncurses 函數(shù)的類似表格的列表,并參考了包含完整詳細(xì)信息的手冊頁。例如,在 curs_printw(3X) 手冊頁中描述了 printw,可以通過以下方式查看:

  1. $ man 3x curs_printw

更簡單點(diǎn):

  1. $ man curs_printw

使用 ncurses,你可以創(chuàng)建更多有趣的程序。通過在屏幕上的特定位置打印文本,你可以創(chuàng)建在終端中運(yùn)行的游戲和高級實(shí)用程序。 

 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2010-07-27 09:44:16

HTML 5

2011-03-24 09:28:47

Linux文件系統(tǒng)barrier

2023-03-20 11:36:28

Linux命令

2021-09-08 08:36:50

ncursesLinux猜謎游戲

2021-11-19 12:00:12

Linux傳輸文件

2021-09-27 09:43:18

LimaMac容器

2022-11-22 06:43:33

Kubernetes云服務(wù)Linux

2018-04-16 09:42:25

編程顏色ncurses

2021-11-24 09:43:11

grepLinux文件

2018-05-30 08:01:17

LinuxNcurses編程庫

2021-01-08 13:56:50

LinuxJOE文本編輯器

2017-02-27 14:50:36

Linux命令數(shù)據(jù)

2025-07-31 06:45:00

大模型LLMOpenAI

2018-11-06 07:30:00

2021-03-15 21:50:22

Linux提取文本GUI工具

2011-01-13 09:44:19

Linuxsudo技巧

2020-10-26 09:00:00

LinuxVagrant操作系統(tǒng)

2019-10-09 11:50:44

InsyncLinuxOneDrive

2023-11-06 18:53:23

python視頻

2022-03-11 10:19:52

KNotesLinux桌面
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

国内久久久精品| 91精品国产综合久久精品图片 | 9.1麻豆精品| 一区二区三区四区亚洲| 国产亚洲精品久久飘花| 中文字幕av第一页| 国内久久视频| 在线免费观看羞羞视频一区二区| 波多野结衣网页| 中文字幕资源网在线观看免费| 国产精品成人网| 激情久久av| 国产精品无码AV| 久久精品首页| 欧美精品videosex极品1| 国产毛片欧美毛片久久久| 国产精品99久久免费观看| 欧美视频一二三区| 免费在线a视频| 黄色网在线播放| 久久精品免视看| 国产欧美韩日| 99热这里只有精品99| 日韩精品1区2区3区| 97久久精品视频| 三级全黄做爰视频| 欧美一区二区三区高清视频| 亚洲精品美女免费| 中文在线字幕观看| 99视频有精品高清视频| 欧洲人成人精品| 37pao成人国产永久免费视频| 免费污视频在线观看| 中文字幕中文字幕一区| 日韩av影视| 邻居大乳一区二区三区| 99久久99精品久久久久久| 亚洲综合最新在线| 91精品人妻一区二区三区果冻| 麻豆久久婷婷| 欧美孕妇毛茸茸xxxx| 日韩三级视频在线播放| 在线成人av| 久久久欧美精品| 强乱中文字幕av一区乱码| 在线观看国产精品入口| 久久精品一偷一偷国产| 五月综合色婷婷| 色综合咪咪久久网| 深夜福利亚洲导航| 青青操在线视频观看| 日韩88av| 久久精品91久久久久久再现| 国产白丝一区二区三区| 我不卡影院28| 欧美另类极品videosbest最新版本| 小泽玛利亚一区| 91精品蜜臀一区二区三区在线| 日韩亚洲精品电影| 激情四射综合网| 国户精品久久久久久久久久久不卡| 欧美精品videos另类日本| 日韩欧美亚洲国产| 性欧美xxxx大乳国产app| 国产97在线观看| 亚洲精品一区二区二区| 精品一区二区三区不卡| 91九色在线免费视频| 亚洲风情第一页| 99久久国产综合色|国产精品| 精品日韩欧美| av中文字幕在线| 中文字幕一区二区三区精华液| 中文字幕在线观看一区二区三区| 直接在线观看的三级网址| 亚洲影视在线播放| 国模杨依粉嫩蝴蝶150p| 图片一区二区| 亚洲高清av在线| 黄色aaa视频| 亚洲澳门在线| 91av在线国产| 亚洲天堂自拍偷拍| 丁香婷婷深情五月亚洲| 日本不卡高清视频一区| 精产国品自在线www| 亚洲aⅴ怡春院| 国产高清视频网站| 日韩中文在线| 亚洲人成网在线播放| 九九这里只有精品视频| 国产一级久久| 国产日韩在线免费| 四虎国产精品永远| 亚洲国产成人在线| 久草免费福利在线| 福利一区二区免费视频| 精品久久99ma| 欧美激情 一区| 欧美视频久久| 国产精品自拍偷拍视频| 色哟哟中文字幕| 日韩一区在线免费观看| 免费成人在线视频网站| 国产精品麻豆| 国产一区二区三区直播精品电影| 婷婷久久综合网| 久久久成人网| 波多野结衣精品久久| 波多野结衣在线影院| 亚洲午夜一区二区三区| 亚洲欧美偷拍另类| 小说区图片区色综合区| 欧美成人免费视频| 日韩av免费播放| 91尤物视频在线观看| 粉嫩av一区二区三区天美传媒| 国模一区二区| 亚洲码在线观看| 国产精品第56页| 国产精品一区二区在线看| 欧美日韩国产综合视频在线| 春色校园综合激情亚洲| 91精品国产91综合久久蜜臀| 中文字幕欧美激情极品| 国产色综合网| 国产欧美综合精品一区二区| 18网站在线观看| 69堂成人精品免费视频| 久久精品国产亚洲AV成人婷婷| 久久男女视频| 乱色588欧美| 国内激情视频在线观看| 亚洲第一网中文字幕| 久久久国产成人| 国产乱码字幕精品高清av| 欧美性视频在线播放| 久久久国产精品网站| 中文字幕国产亚洲| 中文字幕乱码人妻无码久久| 欧美激情一区二区| 无码人妻精品一区二区三区66| 亚洲图片久久| 国产97人人超碰caoprom| 国产高清视频在线| 欧美午夜宅男影院| 日韩一区二区三区四区视频| 麻豆专区一区二区三区四区五区| 婷婷精品国产一区二区三区日韩| 日韩高清在线| 丝袜亚洲另类欧美重口| 国产毛片在线视频| 亚洲免费观看高清完整版在线观看| 岛国av免费在线| 亚洲无中文字幕| 97se视频在线观看| 2020av在线| 亚洲欧美成人精品| 中文字幕一区二区在线视频| 中文字幕一区二区在线播放| 欧美成人三级在线播放| 中文在线日韩| 国产伦视频一区二区三区| 男人天堂视频在线观看| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 一区二区免费不卡在线| av免费观看久久| 亚洲最大网站| 日韩在线精品一区| 精品国自产在线观看| 五月婷婷激情综合网| 日韩精品无码一区二区三区久久久| 日韩电影在线免费| 无码人妻精品一区二区三区99v| 国产精品乱战久久久| 日本不卡高字幕在线2019| 欧美日本一道| 亚洲国产欧美一区二区三区久久| 国产免费av一区| 亚洲欧洲三级电影| 日本五十肥熟交尾| 欧美aaaaaa午夜精品| 麻豆传媒网站在线观看| 自拍偷拍欧美一区| 91久久大香伊蕉在人线| 激情开心成人网| 欧美另类高清videos| 国内精品在线视频| 日韩精品一区二区三区在线观看 | 久久亚洲国产精品日日av夜夜| 黄色精品视频| 欧美激情中文网| 国产精品秘入口| 精品久久久久av影院| 中文字幕免费高清在线观看| 亚洲一区二区三区四区的 | 一区二区三区四区在线播放| 成人黄色免费网址| 成人免费不卡视频| 中文字幕在线观看日| 性高湖久久久久久久久| 日本福利视频在线观看| 日韩精品不卡一区二区| 精品国产乱码一区二区三区四区| 日韩电影免费观看高清完整版在线观看| 久久久久中文字幕2018| 国产高清在线看| 日韩精品高清在线| www.综合色| 91看片在线播放| 亚洲精品国产a久久久久久| 少妇一级黄色片| 91影院在线免费观看| 国产av一区二区三区传媒| 久久精品国产77777蜜臀| 国产免费黄色av| 亚洲精品系列| 亚洲色婷婷久久精品av蜜桃| 欧美a级片视频| 偷拍视频一区二区| 红桃视频在线观看一区二区| 久久99蜜桃综合影院免费观看| 亚洲超碰在线观看| 亚洲va码欧洲m码| 996久久国产精品线观看| 国产精品678| 二区三区不卡| 欧美一区视频在线| 欧美三级网站| 91极品女神在线| h片视频在线观看| 欧美黑人视频一区| 日日夜夜天天综合入口| 久久午夜a级毛片| 老司机精品影院| 日韩一区二区福利| 日本三级在线视频| 久久综合伊人77777蜜臀| 黄色网在线免费看| 精品中文字幕乱| 日韩专区av| 午夜精品福利在线观看| 波多野一区二区| 97碰碰碰免费色视频| 国产va在线视频| 欧美最猛黑人xxxx黑人猛叫黄| 精精国产xxxx视频在线野外| 国语自产在线不卡| 偷拍自拍在线看| 日韩美女福利视频| 在线成人视屏| 国产在线视频91| 欧美大片91| 国产精品免费在线| 色天下一区二区三区| 麻豆亚洲一区| 激情婷婷综合| 中文字幕免费在线不卡| 亚洲国产精品成人| 国产aaa免费视频| 国产伦理一区| www.com黄色片| 国产精品一二二区| 午夜视频在线观看国产| 久久久99久久| 一级性生活免费视频| 亚洲午夜三级在线| 中文字幕一区在线播放| 欧美日韩激情在线| 国产小视频免费观看| 亚洲欧美日韩视频一区| 色网站免费在线观看| 久久久久久久爱| 日韩pacopacomama| 91在线视频成人| 欧美jizz19性欧美| 亚洲人成网站在线观看播放| 欧美激情第8页| 久久9精品区-无套内射无码| 美国毛片一区二区三区| 国产精品嫩草69影院| 国产三级精品视频| 久久久久黄色片| 在线观看网站黄不卡| 国产福利视频导航| 亚洲人成77777在线观看网| 含羞草www国产在线视频| 26uuu久久噜噜噜噜| 欧洲精品久久久久毛片完整版| 国产精品免费一区二区三区观看 | www.av蜜桃| 日本女优在线视频一区二区| 日本黄色www| 国产嫩草影院久久久久| 国产一级视频在线播放| 欧美色爱综合网| 四虎在线视频免费观看| 色噜噜狠狠狠综合曰曰曰 | 国产在线观看精品一区二区三区| 999在线精品| 丰满女人性猛交| 久久在线精品| 艳妇乳肉豪妇荡乳xxx| 中文字幕日本乱码精品影院| 久久精品视频5| 精品成人免费观看| www.欧美日本韩国| 国产精品免费网站| 日韩免费电影在线观看| 成人毛片100部免费看| 男女激情视频一区| 香蕉网在线播放| 亚洲国产欧美另类丝袜| 国产理论片在线观看| 在线视频欧美日韩精品| 国产精品迅雷| 久久riav二区三区| 亚洲高清不卡| 国产精品91av| 一区二区三区av电影| 97人妻精品一区二区三区| 国产一区二区日韩| 欧美18av| 欧美日韩一区在线播放| 亚洲久久一区| 岛国精品资源网站| 亚洲国产一区二区在线播放| 精品国产乱码一区二区三| 久久精品成人一区二区三区| 日韩欧乱色一区二区三区在线| 三区精品视频观看| 蜜臀av一区二区| 久久久久亚洲AV成人无在| 色婷婷综合五月| 可以免费看污视频的网站在线| 欧美一区二区三区四区在线| 日本在线中文字幕一区| 91视频 -- 69xx| 91蜜桃免费观看视频| 天堂网av手机版| 亚洲视频一区二区| 天天综合网站| 亚洲高清视频一区| 美女视频黄 久久| 搜索黄色一级片| 欧美成人精品1314www| 波多野结衣中文在线| 精品欧美国产| 日韩精品三区四区| 黄色激情小视频| 欧美一区二区福利在线| 欧美性爽视频| 国产三区精品| 欧美一级视频| gv天堂gv无码男同在线观看| 欧美日韩视频一区二区| 精品视频在线一区二区| 亚洲一区二区三区四区在线播放| 欧美激情综合| 自拍视频一区二区| 91成人在线观看喷潮| 在线观看免费高清完整| 91人成网站www| 极品中文字幕一区| 91精品人妻一区二区三区蜜桃欧美| 在线精品视频小说1| 男人的天堂在线视频免费观看 | 欧美一级淫片播放口| 成人免费在线播放| 日本一本在线视频| 亚洲一区二区三区爽爽爽爽爽| 青青草在线播放| 国产精选久久久久久| 欧美三级小说| 亚洲最大成人网站| 7777精品伊人久久久大香线蕉完整版| 麻豆av在线播放| 日本免费高清一区二区| 国产一区二区毛片| 日本在线播放视频| 日韩日本欧美亚洲| 麻豆国产欧美一区二区三区r| 国产视频在线视频| 亚洲自拍与偷拍| 国产小视频在线| 北条麻妃高清一区| 蜜臀av在线播放一区二区三区| 国产一二三四在线| 一区二区三区视频在线| 99香蕉久久| 五月天中文字幕在线| 天天射综合影视| 中文字幕资源网在线观看| 欧美日韩在线一区二区三区| 国产乱码字幕精品高清av| 伊人成年综合网| 久久理论片午夜琪琪电影网| 日韩欧美网站| 右手影院亚洲欧美| 精品奇米国产一区二区三区|