精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

免费看污黄网站在线观看| 国产精品成人一区二区艾草| 午夜精品123| 日韩在线中文字| 轻点好疼好大好爽视频| 免费视频网站在线观看入口| 国产精品久久久网站| 日本一区二区综合亚洲| 91精品国产91久久久久久| 亚洲精品乱码久久久久久动漫| 青青视频在线观| 亚洲天堂中文字幕在线观看| 国产精品午夜久久| 国产a∨精品一区二区三区不卡| 三级av免费看| 麻豆理论在线观看| www.欧美色图| 欧美激情亚洲国产| 中文字幕一区二区三区四| √最新版天堂资源网在线| 国产91综合网| 欧美激情欧美激情| 性生交大片免费看l| 69久久夜色| 美国十次了思思久久精品导航| 亚洲欧美精品中文字幕在线| 国产免费毛卡片| 蜜桃视频在线观看网站| 久久久久国产精品一区三寸| 日韩国产精品视频| 久久久精品在线视频| 欧美视频综合| 国产999精品久久久久久 | 超碰资源在线| 播五月开心婷婷综合| 97精品国产97久久久久久| 秘密基地免费观看完整版中文| 国产精品一区hongkong| av一二三不卡影片| 亚洲va欧美va国产综合剧情| 全网免费在线播放视频入口| 欧美经典一区| 性做久久久久久| japanese在线视频| 蜜臀av免费在线观看| 亚洲一区二区三区免费在线观看| 亚洲色图欧美制服丝袜另类第一页| 亚洲色图久久久| 1024视频在线| 国产日韩一级二级三级| 亚洲aa中文字幕| 中文字幕一区二区在线视频| 你懂的视频一区二区| 亚洲国产精品99| 91视频免费版污| 成人免费无遮挡| 日韩久久一区二区| 精品免费一区二区三区蜜桃| 国产精品久久久久久久久夜色| 国产午夜久久| 日本91av在线播放| 欧美卡一卡二卡三| 美女精品一区最新中文字幕一区二区三区| 91高清视频在线| 黄色一级片国产| 男男激情在线| 久久精品一区二区三区不卡| 91久久久久久久| 国产成人在线免费视频| 99精品在线观看| 亚洲精品一区中文| 9191在线视频| 国产成人免费精品| 精品福利樱桃av导航| 一区二区三区四区国产| 四虎精品成人影院观看地址| 国产综合一区二区| 欧美国产高跟鞋裸体秀xxxhd| 免费网站看av| 99久久精品国产亚洲精品| 视频直播国产精品| 九九热精彩视频| 国产日韩精品视频一区二区三区| 91超碰中文字幕久久精品| 国产成人精品777777| 欧美三级第一页| zzijzzij亚洲日本成熟少妇| 国产三级国产精品| 99精品中文字幕在线不卡| 欧美人狂配大交3d怪物一区| 国产91美女视频| 亚洲成人一区在线观看| 姬川优奈aav一区二区| 人人爽人人av| 另类专区亚洲| 欧美一区二区在线视频| 一级黄色香蕉视频| 欧美片网站免费| 亚洲欧美日韩网| 男人在线观看视频| 久久在线播放| 色偷偷av一区二区三区乱| 久草福利资源在线观看| 鲁大师成人一区二区三区| 91免费在线视频| 日本人妖在线| 一区二区在线免费观看| 中文字幕一区二区三区四区五区人 | 卡通欧美亚洲| 日韩午夜小视频| 一起操在线视频| 成人自拍视频网| 精品人在线二区三区| 久久久久中文字幕亚洲精品 | 粉嫩一区二区| 日韩三级视频在线观看| 在线视频第一页| 国产在视频线精品视频www666| 亚洲激情小视频| 亚洲天堂成人av| 亚洲九九在线| 精品少妇v888av| 久久免费精彩视频| 亚洲精品1区| 欧美一区二粉嫩精品国产一线天| 中国一级免费毛片| 国产精品一二三| 91传媒免费看| 欧美性受xxxx狂喷水| 中文字幕制服丝袜一区二区三区 | 欧美精品一区在线| 天堂av在线免费观看| 亚洲精品菠萝久久久久久久| 亚洲国产高清av| 福利一区三区| 精品国产乱码久久久久久浪潮| 国产女人18毛片水真多18| 国产精品久久久久一区二区三区厕所| 欧美在线精品免播放器视频| 蜜臀久久99精品久久久| 一区二区三区自拍| 色www永久免费视频首页在线| 国产ktv在线视频| 欧美另类变人与禽xxxxx| 国产精品久久久久久9999| 国产尤物久久久| 国产成人97精品免费看片| 日本黄色中文字幕| 久久一留热品黄| 一区二区免费在线观看| 一区在线影院| 中文字幕久热精品视频在线| 亚洲成人生活片| 国产一区二区美女诱惑| 在线视频91| 九色porny丨国产首页在线| 亚洲成在人线av| 国产精品成人av久久| 丝袜亚洲另类欧美综合| 91亚洲精品在线观看| 操你啦在线视频| 狠狠做深爱婷婷久久综合一区| 成年人在线观看视频免费| 精品国产一区一区二区三亚瑟| 久久久久北条麻妃免费看| 五月婷婷开心网| 91蜜桃网址入口| 成人在线免费观看网址| 免费观看欧美大片| 欧美午夜精品久久久久久孕妇| 亚洲男人天堂2021| 午夜久久久久| 国产三级精品在线不卡| 免费在线你懂的| 一本一道波多野结衣一区二区| 久久精品久久99| 欧美黄色免费| 久久久久久久久久久一区| 男人的天堂在线视频免费观看 | 久久精品国产亚洲5555| 中文字幕日韩精品在线观看| 国产一区二区三区三州| 久久这里都是精品| www.日本一区| 久久不见久久见中文字幕免费| 国产精品久久av| 深夜视频在线免费| 欧美唯美清纯偷拍| 国产亚洲精品久久久久久无几年桃 | 欧美午夜精品久久久久久浪潮| 亚洲天堂2018av| 很黄很黄激情成人| 97视频热人人精品| 性欧美xxx69hd高清| 亚洲成人aaa| 欧美一区免费看| 久久久综合视频| 91精产国品一二三产区别沈先生| 精品国产精品国产偷麻豆| 91老司机精品视频| 波多视频一区| 欧美另类极品videosbest最新版本 | 另类小说一区二区三区| 欧美大黑帍在线播放| 欧美日韩国产在线观看网站 | 日本伊人精品一区二区三区介绍| 好了av在线| 欧美日韩国产综合久久| 日本三级中文字幕| 成人激情av网| 日本中文字幕精品—区二区| 亚洲三级国产| 好吊色视频988gao在线观看| 国产精品一线天粉嫩av| 国产精品大全| 九色porny视频在线观看| 久久综合电影一区| 精品人妻一区二区三区换脸明星 | 精品在线一区二区| 在线视频一区观看| 啪啪激情综合网| 日本91av在线播放| 丁香花电影在线观看完整版| 色播久久人人爽人人爽人人片视av| 天堂网在线播放| 色乱码一区二区三区88| 精品少妇久久久久久888优播| 国产精品毛片久久久久久久| 色呦色呦色精品| 日韩精品午夜视频| 中文字幕久精品免| 色综合中文网| 看高清中日韩色视频| 欧美va在线| 久久伊人91精品综合网站| 成人好色电影| 欧美精品日日鲁夜夜添| 看黄色一级大片| 色综合天天综合网天天看片| 国产精品久久久久久久妇| 亚洲国产成人av好男人在线观看| 99久久免费看精品国产一区| 亚洲在线播放| 亚洲一卡二卡区| 不卡在线一区二区| 成人h在线播放| 丝袜美腿一区| 日本精品性网站在线观看| 欧美大胆a人体大胆做受| 韩国19禁主播vip福利视频| 黄色在线视频观看网站| 制服丝袜亚洲网站| 欧美福利视频一区二区| 中文字幕日本乱码精品影院| 99久久久无码国产精品性波多 | 欧美综合在线观看| 在线高清av| 国产精品成人一区二区| 成人在线免费电影网站| 成人网在线免费看| 韩国久久久久久| 国产成人精品av在线| 国产电影一区二区三区爱妃记| 国产精品青青在线观看爽香蕉| 欧美xxxx视频| 色777狠狠综合秋免鲁丝| 色的视频在线免费看| 日韩精品视频三区| 韩国中文字幕2020精品| 最新国产精品亚洲| 在线观看电影av| 深夜福利一区二区| 中文字幕伦理免费在线视频| 久久久免费精品视频| 亚洲一级少妇| 91精品久久久久| 视频在线日韩| 成人亚洲激情网| 国产精品chinese在线观看| 裸模一区二区三区免费| 色综合五月天| 日本一区二区视频| 农村少妇一区二区三区四区五区 | 国产精品美女久久| 亚洲国产高清在线观看| 成人福利网站在线观看11| 69精品国产久热在线观看| 免费久久久一本精品久久区| 日韩国产专区| 欧美精品一区二区三区三州| 欧美久久影院| 成人免费观看毛片| 国产一区二区不卡| 亚洲午夜福利在线观看| 亚洲美女偷拍久久| 国产黄在线免费观看| 香蕉av福利精品导航| 中文字幕在线观看欧美| 亚洲国产成人爱av在线播放| 1024国产在线| 国产97人人超碰caoprom| 亚洲三级av| 亚洲精品一区二区三区av| 少妇精品久久久一区二区三区| 黄色免费高清视频| 久久亚洲精品伦理| 国产免费一区二区三区最新6| 国产精品灌醉下药二区| 亚洲天堂视频网站| 色综合天天综合色综合av | 亚洲日本网址| 国产伦精品一区二区三区视频免费 | 国产精品久久久久久久久妇女| 国精产品一区一区三区视频| 亚洲黄色高清| 亚洲一二三av| 欧美极品aⅴ影院| 国产精品100| 日韩欧美高清在线| 欧美一级淫片免费视频魅影视频| 中文字幕综合在线| 久久人体大尺度| 久久久精品动漫| 亚洲国产综合在线看不卡| 欧美xxxxxbbbbb| 成人va在线观看| 看片网站在线观看| 欧美久久久久中文字幕| 成人影视在线播放| 日韩av电影手机在线| 亚洲欧美校园春色| 亚洲欧洲国产精品久久| 久久久国产精品一区二区中文| a级片在线观看视频| 一区二区三区精密机械公司| 丰满少妇乱子伦精品看片| 日韩女优制服丝袜电影| 国产原创精品视频| 国产精品久久久久久久久久小说| 免费一区二区三区视频导航| 少妇高潮喷水久久久久久久久久| 成人一级视频在线观看| 在线观看福利片| 亚洲青青青在线视频| 亚洲综合精品在线| 亚洲国产女人aaa毛片在线| 欧美巨大xxxx做受沙滩| 波多野结衣久草一区| 激情欧美一区| 污网站在线免费| 中文字幕综合网| 国产成人精品无码高潮| 亚洲美女黄色片| 黄瓜视频成人app免费| 日韩av一区二区三区在线观看| 正在播放日韩欧美一页| 中文字幕人妻无码系列第三区| 亚洲乱码中文字幕综合| 精品人妻一区二区三区麻豆91| 欧美黄色免费网站| 美女视频免费精品| 国产精品99久久免费黑人人妻| 国产精品一二三四| 日韩福利片在线观看| 亚洲精品一区久久久久久| 高清电影一区| 一本一道久久a久久精品综合| 国产一区亚洲一区| 久久亚洲国产成人精品性色| 亚洲精品久久久一区二区三区| av电影一区| 一区二区三区四区不卡| 国产成人a级片| 超碰超碰超碰超碰| 最近2019年手机中文字幕| 久久av偷拍| 日本精品一区二区三区四区| 国产精品三级久久久久三级| 国产手机精品视频| 社区色欧美激情 | 亚洲1区在线观看| 国产精品无码av无码| 日韩美女视频一区二区| 手机看片一区二区| 国产精品丝袜白浆摸在线| 亚洲另类春色校园小说| 日韩不卡一二三| 亚洲444eee在线观看| а√天堂中文在线资源bt在线| 99国产在线| 麻豆久久一区二区| 青青草av在线播放| 久久精品国产清自在天天线| 欧美日日夜夜| 国产探花一区二区三区| 在线免费观看日韩欧美| 黄色小视频在线免费观看| 18成人在线| 日韩制服丝袜先锋影音| 久久久久亚洲av片无码下载蜜桃|