Linux curses 总结三(对键盘的操作)

来源:互联网 发布:网络教育统考不通过率 编辑:程序博客网 时间:2024/05/15 01:36
  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);获得键盘输入放入stringint 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 256int 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);}
0 0
原创粉丝点击