关闭回显
来源:互联网 发布:手机淘宝所在地怎么改 编辑:程序博客网 时间:2024/05/18 15:22
#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; }示例1:关闭终端回显,键盘输入的字符不会在终端窗口显示。> #include <stdio.h>> #include <stdlib.h>> #include <termios.h>> #include <unistd.h>int main(void){struct termios ts,ots;char passbuf[1024];tcgetattr(STDIN_FILENO,&ts); /* STDIN_FILENO的值是1,表示标准输入的文件描述符 */ots = ts;ts.c_lflag &= ~ECHO; /* 关闭回终端回显功能*/ts.c_lflag |= ECHONL;tcsetattr(STDIN_FILENO,TCSAFLUSH,&ts); /* 应用新终端设置 */fgets(passbuf,1024,stdin); /* 输入字符不会在终端显示 */printf("you input character = %s/n",passbuf);tcsetattr(STDIN_FILENO,TCSANOW,&ots); /* 恢复旧的终端设备 */}示例2:自定义的不带回显的mygetch()函数。int mygetch(){ int ch; struct termios oldt,newt; tcgetattr(STDIN_FILENO,&oldt); newt = oldt; newt.c_lflag &= ~(ICANON | ECHO); tcsetattr(STDIN_FILENO,TCSANOW,&nowt); ch = getchar(); tcsetattr(STDIN_FILENO,TCSANOW,&oldt); return ch;}
0 0
- Linux关闭回显
- 关闭回显
- 关闭回显,并且中断信号关闭,输入密码
- linux stdio 关闭回显
- linux c 关闭回显
- 在oracle中关闭回显
- 关闭终端回显的示例
- spool时关闭回显的问题
- ubuntu关闭独显
- 关闭独显
- ubuntu关闭独显
- 关闭
- 关闭C语言中system()函数的回显
- Shell输入密码时关闭屏幕回显
- Linux shell 脚本文件@echo Off 关闭命令回显
- dos笔记-bat文件如何关闭回显
- ubuntu关闭AMD独显
- CentOs6.5 关闭独显
- HDU1134 Game of Connections
- 第九单元练习题
- 函数linspace生成按等差形式排列的行向量
- java面向对象第6章 异常1
- R语言数据可视化:ggplot2中的qplot()函数
- 关闭回显
- 多线程中的单例模式
- Fabric架构解析
- Problem G: 字符串类(II)
- mybatis org.apache.ibatis.ognl.TokenMgrError: Lexical error at line 1, column 24. Encountered: "\u30
- Chapter 6 Interfaces and Inner Classes.md
- Flume-将数据写入动态分区表
- C++模板实现的队列多线程安全
- MATLAB简单矩阵的输入方法