[bo]以下是引用 [un]flyue[/un] 在 2008-4-20 17:19 的发言:[/bo]
C语言很难实现*号的密码,用Visual C++的MFC就容易多了
你这个程序是测试的,又不是真正要用的,星号不星号都一样
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楼的程序不严谨啊,,哈哈,,但是可以‘*’输出,还是学习了
----------------解决方案--------------------------------------------------------
什么意思?有问题就把问题帖全吧?我也是帮别人改改...输出星号的代码是我的..其它我是改别人的...谢谢
----------------解决方案--------------------------------------------------------