溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux ncurses怎么用

發(fā)布時間:2022-01-27 14:30:51 來源:億速云 閱讀:207 作者:iii 欄目:開發(fā)技術(shù)

這篇“Linux ncurses怎么用”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Linux ncurses怎么用”文章吧。

ncurses(new curses)是一套編程庫,它提供了一系列的函數(shù)以便使用者調(diào)用它們?nèi)ド苫谖谋镜挠脩艚缑妗?ncurses名字中的n意味著“new”,因?yàn)樗?strong>curses的自由軟件版本。由于AT&T“臭名昭著”的版權(quán)政策,人們不得不在后來用ncurses去代替它。

Linux ncurses怎么用

需要在ubuntu系統(tǒng)上安裝庫文件,支持ncurses:

apt-get install libncurses5-dev

initscr()函數(shù):

initscr()用于初始化ncurses數(shù)據(jù)結(jié)構(gòu)并讀取正確的terminfo文件。內(nèi)存將被分配。

如果發(fā)生錯誤,initscr將返回ERR,否則將返回指針。

此外,屏幕將被刪除并初始化。

getyx() 函數(shù):

getyx() 函數(shù)可以用來取得當(dāng)前光標(biāo)的位置。并把它存儲在傳遞給它的兩個變量中。

mvprintw()函數(shù):

在指定的坐標(biāo)輸出

refresh()函數(shù):

更新終端屏幕

endwin()函數(shù):

endwin()將清除ncurses中所有已分配的資源,并將tty模式恢復(fù)為調(diào)用initscr()之前的狀態(tài) 。

必須在ncurses庫中的任何其他函數(shù)之前調(diào)用它,并且必須在程序退出之前調(diào)用endwin()。

當(dāng)您想要輸出到多個終端時,可以使用 newterm(...)而不是initscr()。

下面的代碼可以實(shí)現(xiàn)一個模擬的“球”在屏幕上來回反彈。 代碼參考: [https://www.viget.com/articles/game-programming-in-c-with-the-ncurses-library/]

源程序:

#include #include #define DELAY 30000int main(int argc, char *argv[])
{
int x = 0;
int y = 0;
int max_x = 0,max_y = 0;
int next_x = 0;
int direction = 1;

initscr(); /* 初始化屏幕 */

noecho(); /* 屏幕上不返回任何按鍵 */

curs_set(FALSE); /* 不顯示光標(biāo) */
 
/* getmaxyx(stdscr, max_y, max_x);/* 獲取屏幕尺寸 */

mvprintw(5, 5, "Hello, world!");

refresh(); /* 更新顯示器 */

sleep(1);while(1)
 {
  getmaxyx(stdscr, max_y, max_x);/* 獲取屏幕尺寸 */
  clear(); /* 清屏 */
  mvprintw(y, x, "O");
  refresh();
 
  usleep(DELAY);
 
  next_x = x + direction;
 
  if(next_x >= max_x || next_x else
  {
   x = x + direction;
  }
 }
endwin();  /* 恢復(fù)終端 */
}

Makefile:

# Makefilecc=gcc

LDFLAGS=-lncurses

SRCS := $(wildcard *.c)
TARGET := $(SRCS:%.c=%)

$(TARGET):$(SRCS)
$(cc) $(LDFLAGS) $(SRCS) -o $(TARGET)

clean:
rm $(TARGET)

以上就是關(guān)于“Linux ncurses怎么用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI