上学期在写了一个小项目,现在想把它移植到linux上,但是getch()这个函数在linux中愣是让我使用不愉快,安装了个curese,在网上找了一堆东西都没解决。最后还是自己模拟实现一个感觉还简单些。代码如下

/*---------------------------------------

** copyright (c) 2013-3-2 DeltaYang

** E-mail: DeltaYang89@gmail.com

** getch.c:模拟实现getch()

**--------------------------------------*/

#include

#include //操作终端

#include

#include

#include

char getch()

{

int c=0;

struct termios org_opts, new_opts;

int res=0;

//保留终端原来设置

res=tcgetattr(STDIN_FILENO, &org_opts);

assert(res==0);

//从新设置终端参数

memcpy(&new_opts, &org_opts, sizeof(new_opts));

new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);

tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);

c=getchar();

//恢复中断设置

res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);assert(res==0);

return c;

}

//测试模拟密码输入

int main(int argc,char** argv)

{

int pwdlen=10;

char ch[10];

int i=0;

printf("PASSWORD:");

fflush(stdin);

ch[0]=getch();

while(ch[i]!='\n'&&i<9)

{

printf("*");

i++;

ch[i]=getch();

}

ch[i]='\0';

printf("\n---->:%s\n",ch);

}

[delta@localhost:getch]$ gcc getch.c -o getch

[delta@localhost:getch]$ ./getch

PASSWORD:********

---->:detlfhgh

[delta@localhost:getch]$

linux gcc getch,模拟实现getch()相关推荐

  1. 基于Linux的内存模拟型的字符IO设备驱动程序的设计,并实现线程间通信

    要求:基于Linux的内存模拟型的字符IO设备驱动程序的设计,并编写应用程序实现线程间的通信. 基于Linux的内存模拟型的字符IO设备驱动程序的设计 1 内存模拟型的字符IO设备驱动程序memDrv ...

  2. Linux GCC lib库相互引用,互相依赖(交叉引用)链接解决办法

    Linux GCC中,如果lib a依赖b,b又依赖a,链接的时候无论a放在前,还是b放在前,都会提示unrefrence. 解决办法就是: 链接的时候a链接两次,即: -la -lb -la

  3. linux gcc中sin30度,学习gcc.pdf

    学习gcc 如何在 Ubuntu 下安装和使用 gcc GCC 是在Linux 系统中用的比较多的编译器,一般做Linux 开发的朋友都会用 GCC 编译器,但今天 在 Ubuntu 上安装 GCC ...

  4. linux gcc 示例_最好的Linux示例

    linux gcc 示例 Linux is a powerful operating system that powers most servers and most mobile devices. ...

  5. 在wsl下运行c语言,在Windows10通过WSL架设linux/gcc c语言学习环境

    在Windows10通过WSL架设linux/gcc c语言学习环境 零:简单介绍与先决条件 中国一般的大学C课程中都使用很过时的编译器来进行教授--比如说什么visual studio 6.0啊,d ...

  6. 深入剖析 linux GCC 4.4 的 STL string

    转自: 深入剖析 linux GCC 4.4 的 STL string 本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Wri ...

  7. linux gcc 静态 动态链接库

    linux gcc 静态 动态链接库 静态链接库 首先生成依赖函数的目标文件 gcc -c source1.c source2.c; 然后归档目标文件到静态库 ar -rcs libYourID.a ...

  8. linux源码gpio模拟i2c,linux内核gpio模拟i2c实例.doc

    linux内核gpio模拟i2c实例.doc linux内核GPIO模拟I2C实例2010-10-11作者:cvip302814来源:cvip302814的blog前言:在许多情况下,我们并没有足够的 ...

  9. 2016年linux认证考试,2016年Linux认证考试模拟练习及答案

    2016年Linux认证考试模拟练习及答案 下面哪个命令能去掉主引导信息里的内容(选择最合适的答案) a.fdisk /mbr b.format /mbr c.mbr/format d.mbr/rep ...

最新文章

  1. oracle 概要文件不存在,oracle 概要文件 - kecy1217的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  2. Python自动化运维——文件内容差异对比
  3. SparkContext: Error initializing SparkContext解决方法
  4. Halcon学习笔记:select_points_object_model_3d(3D对象模型阀值分割)
  5. BookStack在线文档管理系统 v2.9
  6. (7)FPGA十大设计思想(第2天)
  7. C语言switch如何退出,C语言萌新,想问问如何让下面那个switch函数输出的结果继续...
  8. c语言 条件 设a 3 b 4,2012年计算机等级二级C语言章节习题及答案(4)
  9. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
  10. 计算机蓝屏 代码0000a,win7 64位系统蓝屏代码0x0000000a的原因及解决方法
  11. 芯片数据分析笔记【03】 | GEO数据库使用教程及在线数据分析工具
  12. JAVA调用方法 万年历
  13. sketchup草图家具拆单软件 有屋 衣柜橱柜 全屋定制 设计渲染生产一体化SU
  14. 教你用python爬虫下载1w+『ppt模板』,再也不用付费去购买啦!
  15. 【等保】二级等保常见问题解答汇总
  16. 树莓派python摄像头文字识别_古德微树莓派摄像头文字识别
  17. 屏幕小于6英寸的手机_2019小屏手机有哪些 8款6英寸以下小屏全面屏手机推荐 (全文)...
  18. vmvare虚拟机无法读取ntfs的U盘解决方法,以及更换镜像下载源
  19. 520催泪感人表白心动文案怎么用免费的记笔记软件记录?
  20. YUV420(I420)与YV12的区别,YUV420p与YUV420区别

热门文章

  1. 监听springboot进程,如果关闭就重启
  2. 关于7z各种不能用的操作解决办法 7za 7z x Error: Can not open file as archive there is no such archive
  3. 蓝拓扑便携式分析仪驱动程序_拔出便携式USB硬盘驱动器会损坏计算机吗?
  4. Turtle库绘画实例
  5. ogg在DDL语句同步时出现[Error code [942], ORA-00942的分析
  6. 聚合架构-晓岩企业架构系列讲座整理(0-19)
  7. CentOS7 DM-Multipath+HUAWEI OceanStor存储多路径配置
  8. IOS开发—iOS视频拍摄与压缩
  9. ASEMI场效应管7N60的极限和静态参数详解
  10. C语言课程设计图书馆管理系统