一个输入密码并显示*的简单程序

先前在CSDN上逛,看到一个帖子问怎样在c下实现输入密码,然后存取并显示*号。于是自己也试着写了一个小程序,输入一段信息,不显示,然后提示输入密码,显示*,然后要查看先前输入的信息,提示输入密码,同样回显*号,如果密码正确,那么显示先前输入的信息,不正确提示密码错误,退出程序。

虽然程序思路简单,但需要有一点要注意的是,后面判断密码是否正确的时候用到了字符串比较函数strcmp,这里存放密码用的是一个一维数组,如果在定义的时候忘了初始化的话,即使你两次输入的密码都正确,如果密码没有把数组填满的话,那么剩余的数组元素都是随机数,比较结果将是不同的!所以先把数组都用相同的元素初始化这一点很重要。

源代码如下:

#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
    char c;                      
    char pass[100] = {0};              //存放密码数组
    char M[100] = {0};                 //存放的信息
    char RevPass[100] = {0};   //把所有数组初始化
    int i,n,m,r;
    i = n = m = r =0;

 

    printf("please input the message:/n");
   
    while((c=getch())!=13){          //回车截止
        M[i++] = c;
   
        m++;                            //记录message的长度
    }

    printf("/nPlease input the password:/n");
     i = 0;
    while ((c=getch())!=13){     //回车截止
                 printf ("*");
                 pass[i++]=c;
                 n++;                      //记录密码长度
    }

    printf("/nif you want to see the message,please input the password:/n");
    i = 0;
    while ((c=getch())!=13){
                 printf ("*");
                 RevPass[i++] = c;          //记录输入的密码
                 r++;                      //记录输入的密码的长度
    }     
   
    if(r!=n){                                //如果长度不一样,不进行比较了,直接提示密码错误
        printf("/nwrong passwords!/n");
        printf("r=%d n=%d",r,n);
    }
    else if(!strcmp(pass,RevPass)){
           printf("/nthe message is :/n");
           for(i=0;i<m;i++){
             printf("%c",M[i]);
           }
    }
   
    else
    printf("/nwrong passwords!/n");
   

    printf("/nThe password you just input are:/n");

    for(i=0;i<n;i++){
        printf("%c ",pass[i]);
    }
    printf("/n");

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值