隐藏回显
来源:互联网 发布:数据库中修改语句 编辑:程序博客网 时间:2024/05/18 16:14
使用termios结构的密码程序
#include <termios.h> #include <stdio.h> #include <stdlib.h> #define PASSWORD_LEN 8 int main() { struct termios initialrsettings, newrsettings; char password[PASSWORD_LEN + 1]; tcgetattr(fileno(stdin), &initialrsettings); newrsettings = initialrsettings; newrsettings.c_lflag &= ~ECHO; printf("Enter password: "); if(tcsetattr(fileno(stdin), TCSAFLUSH, &newrsettings) != 0) { fprintf(stderr,"Could not set attributes\n"); } else { fgets(password, PASSWORD_LEN, stdin); tcsetattr(fileno(stdin), TCSANOW, &initialrsettings); fprintf(stdout, "\nYou entered %s\n", password); } exit(0); }
读取每一个字符
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <termios.h> char *menu[] = { "a - add new record", "d - delete record", "q - quit", NULL, }; int getchoice(char *greet, char *choices[], FILE *in, FILE *out); int main() { int choice = 0; FILE *input; FILE *output; struct termios initial_settings, new_settings; if (!isatty(fileno(stdout))) { fprintf(stderr,"You are not a terminal, OK.\n"); } input = fopen("/dev/tty", "r"); output = fopen("/dev/tty", "w"); if(!input || !output) { fprintf(stderr, "Unable to open /dev/tty\n"); exit(1); } tcgetattr(fileno(input),&initial_settings); new_settings = initial_settings; new_settings.c_lflag &= ~ICANON; new_settings.c_lflag &= ~ECHO; new_settings.c_cc[VMIN] = 1; new_settings.c_cc[VTIME] = 0; new_settings.c_lflag &= ~ISIG; if(tcsetattr(fileno(input), TCSANOW, &new_settings) != 0) { fprintf(stderr,"could not set attributes\n"); } do { choice = getchoice("Please select an action", menu, input, output); printf("You have chosen: %c\n", choice); } while (choice != 'q'); tcsetattr(fileno(input),TCSANOW,&initial_settings); exit(0); } int getchoice(char *greet, char *choices[], FILE *in, FILE *out) { int chosen = 0; int selected; char **option; do { fprintf(out, "Choice: %s\n",greet); option = choices; while(*option) { fprintf(out, "%s\n",*option); option++; } do { selected = fgetc(in); } while (selected == '\n' || selected == '\r'); option = choices; while(*option) { if(selected == *option[0]) { chosen = 1; break; } option++; } if(!chosen) { fprintf(out, "Incorrect choice, select again\n"); } } while(!chosen); return selected; }
0 0
- 隐藏回显
- shell输入密码隐藏回显
- shell输入密码隐藏回显
- 隐藏回退按钮
- ++隐藏++
- 隐藏
- 隐藏
- 隐藏
- Fragment 显示隐藏回调
- navigationBar隐藏,toolbar隐藏
- 接口名字的显式限定 -- 接口名字的隐藏
- 模拟jQuery库,实现图片的隐藏和显
- android 隐藏API显式调用以及内部资源使用方法
- 隐藏 PHP
- 隐藏进程
- 隐藏进程
- 隐藏测试
- 文件隐藏
- 九度 题目1179:阶乘
- CSS选择器
- 反射示例1:通过配置文件运行类中的方法
- 零中频发射机设计与实现
- 安卓拍照
- 隐藏回显
- Codeforces
- java学习笔记
- ABP入门系列(11)——编写单元测试
- Android学习笔记(六)
- 装饰者对象
- Binary Tree Level Order Traversal II
- 在VS2013下的openCV2.4.9安装过程
- OpenJudge 1768 最大子矩阵(区间dp)