• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

使程序不回射输入字符串的方法.....

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: Blog.ChinaUnix.net

软件测试论坛讨论

领测软件测试网

在程序中可能碰到这样的事情,你想输入一些数据,但是又不想回显到屏幕上,怎么作呢?很挠头吧......

其实这样就可以了......

我怎样能使我的程序不回射输入,就象登录时询问我的口令时那样?

有一个简单方法,也有一个稍微复杂点的方法:

简单方法是使用‘getpass()’函数,它几乎能在所有Unix系统上找到。它以一个给定的字符串参数作为提示符(prompt)。它读取输入直到读到一个‘EOF’或换行符(译者注:‘EOF’用‘^d’输入,而换行符为‘^m’或回车)然后返回一个指向位于静态内存区包含键入字符的字符串指针。(注:字符串不包含换行符)

复杂一点的方法是使用‘tcgetattr()’函数和‘tcsetattr()’函数,两个函数都使用一个‘struct termios’结构来操纵终端。下面这两段程序应当能设置回射状态和不回射状态。

两段程序使用到的都是在POSIX标准定义的,通用性很好。

     #include <stdlib.h>

     #include <stdio.h>



     #include <termios.h>
     #include <string.h>

     static struct termios stored_settings;



     void echo_off(void)

     {

         struct termios new_settings;

         tcgetattr(0,&stored_settings);

         new_settings = stored_settings;

         new_settings.c_lflag &= (~ECHO);

         tcsetattr(0,TCSANOW,&new_settings);

         return;

     }



     void echo_on(void)

     {

         tcsetattr(0,TCSANOW,&stored_settings);

         return;

     }

    

 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网