linux 不回车直接读取一个字符的方法

来源:互联网 发布:b超单上的数据看男女 编辑:程序博客网 时间:2024/05/17 08:00

windows下面有 getch() 可以直接输入一个字符,而不需按回车。

linux下如果想直接输入一个字符,只能使用getchar() ,而且要按回车才能触发输入,否则会一直阻塞在输入这里。网上找到一个解决办法,稍加改进,能实现跟windows下 getch() 一样的效果。

代码如下:添加头文件就可以直接使用了。


#include <stdio.h>#ifdef _WIN32 //Linux platform    #include <conio.h>#else    #include <termios.h>#endifchar get1char(void){#ifdef _WIN32        // Do nothing#else   // 保存并修改终端参数    struct termios stored_settings;    struct termios new_settings;    tcgetattr (0, &stored_settings);    new_settings = stored_settings;    new_settings.c_lflag &= (~ICANON);    new_settings.c_cc[VTIME] = 0;    new_settings.c_cc[VMIN] = 1;    tcsetattr (0, TCSANOW, &new_settings);#endif    int ret = 0;    char c;#ifdef _WIN32    c = getch();#else    c = getchar();    putchar('\b'); // 删除回显#endif    printf("input:  [%c]\n", c);#ifdef _WIN32    // Do nothing#else    tcsetattr (0, TCSANOW, &stored_settings); // 恢复终端参数#endif    return c; }






参考:http://www.cppblog.com/fwxjj/archive/2007/07/16/28112.html

0 0
原创粉丝点击