1. 程式人生 > >Linux curses 總結三(對鍵盤的操作)

Linux curses 總結三(對鍵盤的操作)

  1. cbreak & cooked(預處理模式)
  2. curses程式的控制模式函式
  3. curses程式的鍵盤操作函式
  4. 小栗子

    curses程式的鍵盤操作是對底層的簡單封裝介面
    

cbreak & cooked(預處理模式)

cooked:標準輸入模式,處理的是一行資料,每次遇到'\r'
(換行符)才會把輸入到快取的資料傳遞給程式,這種情況下鍵盤輸入特殊字元可以被處理(刪除鍵)

cbreak:這個模式只要有字元輸入就會立即傳遞給程式,特殊字元功能失效,會輸入字元(刪除鍵失效,會往程式你新增字元)

curses程式的鍵盤操作函式

int echo(void);
int noecho(void);
int cbreak(void);
int nocbreak(void);
對特殊字元的處理
int raw(void);
int noraw(void);

curses程式的鍵盤操作函式

獲得鍵盤輸入的一個字元
int getch(void);
獲得鍵盤輸入放入string
int getstr(char* string)
獲得鍵盤的字元,並限制了長度
int getnstr(char* string,int numbers_of_characters);
和scanf類似
int  scanw();

小栗子


#include<stdio.h>
#include<stdlib.h>
#include<curses.h>
#include<string.h>

#define PW_LEN 256
#define NAME_LEN 256 int main(){ char name[NAME_LEN]; char password[PW_LEN]; const char* real_password ="dota2"; int i; initscr(); move(5,10); printw("%s","please login:"); move(7,10); printw("%s","User name:"); getstr(name); move(8,10); printw("%s","password:"); refresh(); cbreak();//鍵盤只要輸入就會傳遞到程式裡,不快取
noecho(); //關閉回顯功能,鍵盤上輸入螢幕看不見 memset(password,'\0',sizeof(password)); while(i<PW_LEN){ password[i]= getch(); if(password[i]=='\n') break; move(8,20+i); addch('*'); refresh(); i++; } echo(); nocbreak(); move(11,10); if(strncmp(real_password,password,strlen(real_password))==0) printw("%s","right"); else printw("%s","wrong"); printw("%s","password"); refresh(); sleep(10); endwin(); exit(EXIT_SUCCESS); }

相關推薦

Linux curses 總結鍵盤操作

cbreak & cooked(預處理模式) curses程式的控制模式函式 curses程式的鍵盤操作函式 小栗子 curses程式的鍵盤操作是對底層的簡單封裝介面 cbreak & cooked(預處理模式) cooked:

linux基礎命令總結更新幹貨!

路徑 可視化 版本 use con 查看文本 端口號 basename 輸出 alias:查看命令別名(別名只針對用戶有效) alias h=hostname(定義別名) cdnet=‘cd /etc/sysconfig/network-

Linux 隨手記文件操作

pan archive .gz ont file 刪除文件 微軟雅黑 fff sans 新建文件夾 mkdir 文件夾名 新建文件 touch 文件名 重命名 mv 文件名 新文件名 將/a目錄移動到/b下,並重命名為c mv /a /b/c

每天一個linux命令文件操作:【轉載】find命令之xargs

溢出 系統性能 問題 ameba pri 幾分鐘 body 只有一個 獲取參數   在使用 find命令的-exec選項處理匹配到的文件時, find命令將所有匹配到的文件一起傳遞給exec執行。但有些系統對能夠傳遞給exec的命令長度有限制,這樣在find命令運行幾分鐘之

《javascript 高級程序設計》學習總結 1

java 關鍵字 下一個 引用 global 討論 其他瀏覽器 而後 rom    引言:任何語言的核心都必然會描述這門語言的最基本的工作原理,而描述的內容通常都要涉及這門語言的語法、操作符、數據類型、內置功能等用於構建復雜解決方案的基本概念。 今天我就這些基本的概念開始進

Linux之vi種模式常用操作

num 快捷 字母 內容替換 info tar linux 刪除 光標 vi的三種模式:命令模式、編輯模式、尾行模式 一.命令模式   1.光標移動     a、字符級       左(h)  下(j)  上(k)  右(l)     b、單詞級       w wor

Linux內核設計與實現 總結筆記第四章進程調度

什麽 原則 好的 nic 調度系統 相交 中間 使用 就是 進程調度 調度程序負責決定將哪個進程投入運行,何時運行以及運行多長時間。 調度程序沒有太復雜的原理,最大限度地利用處理器時間的原則是,只要有可以執行的進程,那麽就總會有進程正在執行。 多任務 多任務系統可以劃分

Linux核心設計與實現 總結筆記第五章系統呼叫

系統呼叫 核心提供了使用者程序和核心互動的介面,使得應用程式可以受限制的訪問硬體裝置。 提供這些介面主要是為了保證系統穩定可靠,避免應用程式恣意妄行。   一、核心通訊 系統呼叫在使用者空間程序和硬體裝置之間新增中間才能。作用有三: 為使用者空間提供一種硬體的抽象介面。無需理會物理

Linux內核設計與實現 總結筆記第五章系統調用

總結筆記 其余 筆記 運行 six 應用 osi 虛擬系統 抽象接口 系統調用 內核提供了用戶進程和內核交互的接口,使得應用程序可以受限制的訪問硬件設備。 提供這些接口主要是為了保證系統穩定可靠,避免應用程序恣意妄行。 一、內核通信 系統調用在用戶空間進程和硬件設備之間

Linux核心設計與實現 總結筆記第六章核心資料結構

核心資料結構 Linux核心實現了這些通用資料結構,而且提倡大家在開發時重用。 核心開發者應該儘可能地使用這些資料結構,而不要自作主張的山寨方法。 通用的資料結構有以下幾種:連結串列、佇列、對映和二叉樹   一、連結串列 1.1 單向連結串列和雙向連結串列   1.2 環形

SQL使用總結系統目錄

系統目錄是一些表和檢視的集合,它們包含了關於資料庫的資訊。每個資料庫都有系統目錄,其中定義了資料庫的結構,還有資料庫所包含資料的資訊。舉例來說,用於資料庫裡所有表的資料目錄語言(DDL)就儲存在系統目錄裡。 在具體實現裡,系統目錄的內容會被劃分為物件的邏輯組,以表的形式供資料庫管理員(DBA

django框架十三:orm的多操作

什麼是多對多? 多對多:一個表中的一條資料對應另一個表中的多條資料;另外一個表中的一條資料對應著前一個表中的多條資料 圖例: 以出版社和文章為例: 怎麼解決多對多的對應關係呢? 不能使用之前的一對多時的外來鍵了,我們可以通過第三張表來表示。如圖: 接下來在m

js學習總結:DOM節點二dom基本操作

一、DOM繼承樹 DOM——Document Object Model DOM定義了表示修改文件所需要的方法。DOM物件即為宿主物件,由瀏覽器廠商定義,用來操作html和xml的一類廠商定義,也有人稱DOM是對HTML以及xml的標準程式設計介面。 繼承樹模型圖: 1.document繼承於HTM

Python(45)_次登入驗證結合檔案操作

#-*-coding:utf-8-*- ''' 三次登入再次優化,利用檔案操作這個程式注意:1、把使用者名稱和密碼以w方式寫進去時候,是怎麼實現換行的? format的用法 2、把檔案讀出來的時候,是怎麼讀的,是怎麼去掉換行符的? 迴圈放到列表裡 ''' lis= [] us

作業系統總結處理機排程

 基本內容 1:基本概念 高階排程:作業排程或長程排程。 低階排程:程序排程或短程排程。非搶佔式,搶佔式。 終極排程:中程排程。解決記憶體緊張。 2:排程演算法 先來先服務FCFS:作業排程或程序排程。非搶佔式。很少作為程序排程主演算法。     優點:簡單,易於實現。

Linux 訊號詳解sleep,raise

//sleep 函式 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys

Linux學習筆記常用命令

11 、 壓縮檔案命令:gzip 命令名稱:gzip  命令英文原意:GNU zip  命令所在路徑:/bin/gzip  執行許可權:所有使用者  語法:gzip [檔案]  -d 解壓縮 同gunzip 功能描述:壓縮檔案 不保留原檔案,只剩壓縮包 壓縮後文件格式:.gz 12、解壓縮.gz的壓縮檔案命令

百度搜索下拉框效果鍵盤操作只完成部分功能,僅供參考

        <script src="../scripts/jquery-2.1.1.min.js"></script>         <script type="text/javascript">             $(function () {  

Spring初學spring作為容器的理解

以前,一直不清楚spring容器的概念,現在終於理解了。 spring作為容器,其實最重要的就是配置檔案xml。在裡面建立好各種各樣的bean,有屬性注入的(注入字串、list、map、set等集合)、函式注入、物件注入(將一個bean通過ref引用注入到)等,這一步只是建

Linux連結庫C跟C++之間動態庫的相互呼叫

http://www.cppblog.com/wolf/articles/74928.html http://www.cppblog.com/wolf/articles/77828.html http://www.jb51.net/article/34990.htm extern "C"的理解: 很多人認