`
夜不懂白的黑
  • 浏览: 19536 次
  • 性别: Icon_minigender_1
  • 来自: 孝感
社区版块
存档分类
最新评论

Unix/Linux下实现命令行输入以*回显

阅读更多

 

在linux/Unix命令行下执行一个程序,将输入以*号回显出来,类似于登录时输入密码以*代替。
(Windows下很好实现,可以结合使用getch()和putchar(),但是getch()不是标准C函数,linux/Unix下没有,需要写一个函数实现getch()),好了直接上代码
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include "Base64.c"  //Base64编码程序

int getch(void);

main()
{
        char str1[20],str2[60];
        char ch;
        int i=0;
        printf("Please enter your password: ");
        while((ch=getch())!=13 ) //按回车键退出
        {
          str1[i++]=ch;
          putchar('*');
        }
        str1[i]='\0';
        printf("\n Your input is: %s\n",str1);
        strcpy(str2,base64_encode(base64_encode(str1)));
        printf("Encoding string is: %s\n",str2);
     
}
//参考http://blog.csdn.net/liuchao35758600/article/details/6419499
int getch(void)
{
        struct termios tm, tm_old;
        int fd = STDIN_FILENO, c;
        if(tcgetattr(fd, &tm) < 0) 
        return -1; 
        tm_old = tm;
        cfmakeraw(&tm);
        if(tcsetattr(fd, TCSANOW, &tm) < 0)
                return -1;
        c = fgetc(stdin);
        if(tcsetattr(fd, TCSANOW, &tm_old) < 0)
                return -1;
        if(c == 3) exit(1);  //按Ctrl+C结束退出
        return c; 
}

 有兴趣可以研究下Unix下的一个头文件curses.h,贴一个网站大家看下


更正下:改方法只能实现Linux下的星号显示,对于Unix会有点问题!谢谢
分享到:
评论

相关推荐

    网络经典命令行 (d)

    对于“网络经典命令行”,这通常指的是在各种操作系统环境下(如Windows、Linux或Unix等)用于网络诊断、配置和监控的一系列命令。这些命令能帮助我们快速地获取网络信息、检查连接状态、跟踪数据包以及解决网络问题...

    南京大学操作系统实验-实现接受键盘输入回显到屏幕上的程序.zip

    4. **控制台I/O**:在命令行环境下,键盘输入和屏幕输出通常通过标准输入/输出流(stdin, stdout)进行。在C语言编程中,我们可以使用`stdio.h`库中的函数,如`scanf()`和`printf()`来操作这些流。 5. **事件驱动...

    网络命令行网络命令行

    在没有图形用户界面(GUI)的情况下,命令行工具提供了高效、强大的网络管理能力。本文将深入探讨网络命令行的一些常用命令和应用场景。 1. **ping**:这是一个基础的网络诊断命令,用于检查主机之间的网络连通性。...

    Linux命令环境下C语言实践_用 C C++构造一个简单的shell实验报告.pdf

    在本实验中,学生将通过使用C或C++语言在Linux命令环境下构建一个简单的shell程序,从而深入理解和掌握shell程序的基本功能以及Unix/Linux系统编程。实验主要包括以下几个方面: 1. **基本任务1**:实现一系列基础...

    linux笔记资料.zip

    3. **脚本调试**:使用`set -x`开启命令行回显,便于调试脚本。 ### 七、Linux内核与驱动程序 1. **内核版本**:Linux内核版本标识了系统的稳定性和功能,如`uname -a`查看当前内核信息。 2. **模块加载**:某些...

    网络经典命令——网络命令

    12. **sudo** (在Linux/Unix):以超级用户权限执行命令,确保安全操作,例如更新系统或安装软件。 以上只是部分网络经典命令,掌握这些命令可以帮助初学者快速了解和解决网络问题。通过实践和深入学习,可以更有效...

    linux 操作系统

    Linux操作系统是基于Unix的操作系统,广泛应用于服务器、嵌入式设备和桌面环境中。它以其开源、免费、稳定和高效的特点受到全球开发者的喜爱。在学习Linux时,掌握Shell编程是至关重要的,因为Shell是Linux系统中的...

    bash脚本输入密码不回显问题的解决方法

    在Linux和Unix环境中,Bash shell是常用的命令行解释器,用于执行脚本和交互式命令。当编写Bash脚本时,有时我们需要确保用户的密码输入过程是安全的,即输入的密码不会在屏幕上显示出来,以免被他人窥探。在这样的...

    路由追踪.rar路由追踪.rar路由追踪.rar

    - **Traceroute(Unix/Linux)**:Unix和Linux环境下的命令行工具,同样基于TTL机制。 - **mtr**:结合了traceroute和ping功能的工具,提供持续的追踪和统计信息。 总的来说,路由追踪是网络诊断的重要手段,而...

    必须掌握的八个DOS命令

    DOS(Disk Operating System)命令是早期个人计算机中广泛使用的命令行接口,虽然在现代操作系统中已经不再主流,但它仍然是学习计算机基础和网络管理的重要部分。以下将详细介绍标题和描述中提到的八个必须掌握的...

    traceroute程序设计及实现.doc

    5. **Tracert 命令**: Tracert(Windows系统中)或traceroute(Unix/Linux系统中)是实现路由追踪的命令行工具,它发送具有递增TTL值的UDP或ICMP数据包,从而收集沿途路由器的信息。 6. **程序设计**: 文档可能详细...

    网络命令行的使用和范例

    - 使用批处理文件(Windows)或shell脚本(Linux/Unix)组合多个命令,实现网络管理自动化。 ``` # Windows批处理示例 @echo off ping www.example.com &gt; ping_results.txt tracert google....

    计算机网络ping程序设计

    在Unix/Linux系统中,使用标准的socket API。 3. **ICMP报文构造**:理解ICMP报文结构,包括类型、代码、校验和、数据等字段。ping程序需要构造合适的ICMP回显请求报文,并计算校验和。 4. **数据包发送与接收**:...

    LINUX与UNIX SHELL编程指南

    在IT领域,Linux和Unix操作系统以其稳定性和可定制性而受到广泛的欢迎,而Shell作为它们的命令行解释器,更是程序员和系统管理员的得力工具。"LINUX与UNIX SHELL编程指南"这本书旨在帮助读者深入理解Shell编程,提高...

    网络经典命令行

    5. **ifconfig**:在Unix/Linux系统中,ifconfig用于配置网络接口,如查看IP地址、子网掩码、广播地址等。Windows系统中类似的功能可以通过"ipconfig"实现。 6. **telnet**:这是一种远程登录协议,允许用户通过...

    MiniCom 迷你终端

    MiniCom 是一个小型、功能强大的命令行终端模拟器,尤其适用于Linux和Unix系统。它作为一个轻量级的通信工具,允许用户通过串行端口进行数据传输,进行远程控制和诊断工作。在本文中,我们将深入探讨MiniCom的使用、...

    shell详细教程

    - `set -v`开启命令行回显,显示脚本中未执行的每一行。 - `set -e`使脚本在遇到错误时立即停止。 **常见Shell内置命令** - `cd`:改变当前工作目录。 - `pwd`:显示当前工作目录。 - `echo`:打印文本到标准输出。...

    LinuxShell.pdf

    4. **错误处理与调试**:`set -e`使脚本在遇到错误时立即退出,`set -x`开启命令行回显,便于调试。 5. **输入/输出重定向**:脚本可以使用`, `&gt;`, `&gt;&gt;`操作符重定向输入和输出,还可以通过`exec`命令改变脚本的...

    Win2000命令全集

    在Windows 2000操作系统中,命令行界面(CMD)是系统提供的一个工具,它允许用户通过输入命令来执行各种任务,而无需图形用户界面。"Win2000命令全集"是一个包含了Windows 2000系统中所有可用命令的参考文档或资源,...

Global site tag (gtag.js) - Google Analytics