当前位置: 代码迷 >> C语言 >> 帮忙啦!
  详细解决方案

帮忙啦!

热度:174   发布时间:2008-04-20 17:33:20.0
[bo]以下是引用 [un]flyue[/un] 在 2008-4-20 17:19 的发言:[/bo]

C语言很难实现*号的密码,用Visual C++的MFC就容易多了
你这个程序是测试的,又不是真正要用的,星号不星号都一样

可以用\b和putchar()来控制*号的输出...
----------------解决方案--------------------------------------------------------
还有这招?忘记了
----------------解决方案--------------------------------------------------------
修改2楼程序
#ifndef _GETPASSWD_H
#define _GETPASSWD_H

#include <stdio.h>
#include <conio.h>

char passwd[32] = "";

char *getPasswd()
{
    char c;
    int i = 0;
   
    while ((c=getch()) != '\r')
    {
         passwd[i++] = c;
        putchar('*');
    }
     passwd[i] = '\0';
   
    return passwd;
}

#endif
//*******************************上面是password.h*******************************************
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
//#include"password.h"
#define PASS "123"
int main()
{
    int i,j=0,password=1;
    char name1[10],name2[6]="zhang";
    char *pw;
    printf("please input your name:\n");
    gets(name1);
    while(strcmp(name1,name2)!=0)
    {
        j++;
        printf("input again:");
        printf("j=%d\n",j);
        gets(name1);
        if(j>=3)
        {
            printf("超过次数!");
            getch();
            exit(0);            
        }
    }
    /*if (strcmp(name1,name2)!=0)
    printf("wrong!\n");

    else*/
    printf("hi,welcome!");
    j=0;   
    do{
        printf("\ninput your password:\n");
        pw=getPasswd();
        //printf("\n");
        j++;
        fflush(stdin);
        if(j>=3)
        {
            printf("超过次数!");
            getch();
            exit(0);
        }
    }while(strcmp(pw,PASS)!=0);
    /*if (strcmp(pw,PASS)!=0)
    printf("\nwrong!\n");

    else*/
    printf("\nhello!\n");
    getch();
}
----------------解决方案--------------------------------------------------------
我的运行也是对的..不需要修改吧?
----------------解决方案--------------------------------------------------------
2楼的程序不严谨啊,,哈哈,,但是可以‘*’输出,还是学习了
----------------解决方案--------------------------------------------------------
什么意思?有问题就把问题帖全吧?我也是帮别人改改...输出星号的代码是我的..其它我是改别人的...谢谢
----------------解决方案--------------------------------------------------------
  相关解决方案