程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 一起talk C栗子吧(第一百七十五回:C語言實例

一起talk C栗子吧(第一百七十五回:C語言實例

編輯:關於C

各位看官們,大家好,上一回中咱們說的是關閉終端中緩沖功能的例子,這一回咱們說的例子是:獲取當前終端的行數和列數 。閒話休提,言歸正轉。讓我們一起talk C栗子吧!


看官們,我們在前面章回中介紹了termios相關的信息,以及termios提供的編程接口,通過這些接口可以操作終端,今天我們再介紹一些操作終端的編程接口,通過這些接口可以獲取當前終端的行數和列數,這便是我們今天的主題。

int setupterm(char *term, int fd, int *errret);
該函數用來修改當前終端的類型 該函數的第一個參數是char*類型的指針,函數使用它指向的值來修改終端類型; 該函數的第二個參數是文件描述符,通過它可以修改終端類型; 該函數的第三個參數是一個指針,用來保存函數運行的結果; 該函數運行成功時返回1,失敗時返回-1或者0.其中-1表示沒有終端信息,0表示有終端信息,但是沒有匹配的終端;

通常情況下,第一個參數使用空指針,這樣就表示獲取當前終端的類型;第三個參數也經常使用空指針,這樣只需要查看函數的返回值就可以。

int tigetnum(char * capname);
該函數用來獲取終端中與數值相關的值; 該函數的參數表示與終端中某個數值對應的名字; 該函數運行成功時返回終端中的與參數對應的數值,否則返回-2;

關於該函數的參數,我們可以使用終端中與行數和列數相對的名字:lines和cols。這樣就可以獲取到當前終端的行數和列數。我這麼一說,看官們是不是想馬上動手實現一下?接下來讓我們一起動手吧!

    res = setupterm(NULL,fileno(stdout),NULL);

    row_count = tigetnum("lines");
    col_count = tigetnum("cols");

    printf("Terminal row:%d \n",row_count);
    printf("Terminal colum:%d \n",col_count);

我們在代碼中首先獲取了當前終端中的類型,然後繼續獲取當前終端的行數和列數,這樣便實現的我們的目標。

看官們,以上是核心代碼,完整的代碼放到了我的資源中,大家可以下載使用。

下面是程序的運行結果,請大家參考:

Terminal row:56 
Terminal colum:113

該結果顯示的是我正在使用的終端行數和列數,大家運行時可能會有不同的結果,這個是正確的,因為不同的終端擁有不同的行數和列數。正所謂世界上沒有兩片相同的葉子,世界上也沒有兩個相同的終端,哈哈。此外,在編譯時需要手動鏈接ncurses庫,因為這些接口使用了該庫中的內容,具體的命令如下:

 gcc GetLineCol1.c  -o end -lncurses

各位看官,關於獲取當前終端行數和列數的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved