c语言中密码回显*号实现的途径
相关部分代码如下:
[code]
#include <stdio.h>
#include <string.h>
#define NAME_MAX 10
#define USER_NAME "godofcsdn\0 "
#define PASS_WORD "123456\0 "
int check()
{
char userName[NAME_MAX] = { '\0 '};
char passWord[NAME_MAX]={ '\0 '};
for(; ; )
{
printf( "Login: ");
gets (userName);
printf( "Password: ");
gets(passWord);
if(strcmp(passWord, PASS_WORD) != 0 || strcmp(userName, USER_NAME) != 0)
{
printf( "Login Incorrect!\n ");
setbuf(stdin,NULL);
continue;
}
break;
}
printf( "welcome\n ");
return 1;
}
[/code]
在网上搜索到的都是用getch()每输入一个密码字符就回显一个*,但是我这个程序里是直接输入整个密码字符串,不知道有没有办法实现回显*?
[解决办法]
没有意义吧 用gets()获取输入 等回车键按下时函数才执行完毕 这时密码早就看到了 再回显星号应该没意义了吧 还是觉得getch()或者bioskey()好一点吧
[解决办法]
我不知道有没有这样的库函数,但是可以自己实现这样一个函数.
下面是我编写的一个,供你参考.
将gets()改为mygets(),再予以实现:
void mygets(char *str)
{
int i;
for(i=0;i <NAME_MAX-1;i++)
{
str[i]=getch();
printf( "* ");
if(str[i]== '\r ')
{
str[i]= '\0 ';
break;
}
}
if(i==NAME_MAX-1)str[i]= '\0 ';
}