一个无聊的自动提款机程序---改进版--忽略非法输入
2011-11-29 23:48
316 查看
/* * 自动提款机程序,他会问用户很多的yes/no的问题 * * atm.sh * * while true * do * do_a_transaction # run a program * if play_again # run our program * then * continue # if "y" loop back * fi * break # if "n" break * done * * 这个银行脚本程序将程序的各个组件组合起来 * 1.第一个称为do_a_transaction的程序,完成ATM的工作 * 2.第二个组件play_again,从用户得到回答 * * */ /* * PLAY_AGAIN.C * 功能:实现组件2 * * 对用户显示提示问题 * 接受输入 * 如果是y,返回0 * 如果是n,返回1 * */ #include <stdio.h> #include <termios.h> #define QUESTION "Do you want another transaction" int get_response(char *); int set_crmode(); int tty_mode(int); /* * 这个版本的play_again改进的问题包括 * 关闭规范输入,使得程序能够在用户敲击键盘的同时得到输入的字符 * * 改进包括 忽略非法键 * */ int main(){ int response; //保存tty的mode tty_mode(0); //设置tty的mode set_crmode(); //获得回答 response = get_response(QUESTION); //恢复tty的mode tty_mode(1); return response; } int get_response(char *question){ printf("%s(y/n)?",question); int input; while(1){ //循环读取用户的输入,指导用户输入ynYN // switch(input=getchar()){ case 'y': case 'Y':return 0; case 'n': case 'N': case EOF:return 1; // default: //printf("\ncan not understand %c,",input); //printf("Please type y or n \n"); /* * 当输入sure,没有显示任何内容,他会忽略错误信息 * * */ } } } set_crmode(){ struct termios ttystate; //读取当前的终端驱动属性 tcgetattr(0,&ttystate); //修改配置 //关闭缓冲 ttystate.c_lflag &= ~ICANON; //关闭回显 ttystate.c_lflag &= ~ECHO; //保证一次仅获得一个字符 ttystate.c_cc[VMIN] == 1; //保存修改 tcsetattr(0,TCSANOW,&ttystate); } tty_mode(int how){ static struct termios original_mode; if(how == 0){ tcgetattr(0,&original_mode); }else return tcsetattr(0,TCSANOW,&original_mode); }
相关文章推荐
- 一个无聊的自动提款机程序---改进版--修改终端属性
- 一个无聊的自动提款机程序---改进版——限制用户,超时特征
- 一个无聊的自动提款机程序
- 一个无聊的自动提款机程序---最终版——进行信号的处理
- c语言:模拟实现一个输入密码自动取款的程序
- 用程序来控制一个网页,实现自动输入等操作
- 用程序来控制一个网页,实现自动输入等操作(转载)
- 用程序来控制一个网页,实现自动输入等操作
- c语言:模拟实现一个输入密码自动取款的程序
- 编写一个jsp程序,实现用户登录,当用户输入的用户或密码错误时,将页面重定向到错误提示页,并在该页面显示30秒后 自动回到用户登录界面
- 用程序来控制一个网页,实现自动输入等操作
- 20_Android中apk安装器,通过WebView来load进一个页面,Android通知,程序退出自动杀死进程,通过输入包名的方式杀死进程
- 用程序来控制一个网页,实现自动输入等操作
- 20_Android中apk安装器,通过WebView来load进一个页面,Android通知,程序退出自动杀死进程,通过输入包名的方式杀死进程
- 用程序来控制一个网页,实现自动输入等操作
- 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- Anjuta IDE 下调试程序容易忽略的一个问题
- 如何在tomcat启动时自动加载一个类 以便初始化程序
- 编写一个学生和教师数据输入和显示程序