#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
int main()
{
char name[]="ad",password[]="1234";
char user[100],psw[100];
do{ //如果用户名或者密码任一个错误,重新在输入
printf("请输入用户名:");
gets(user); //输入用户名字符串
strlwr(user); //将输入的字符串全部转化为小写
printf("请输入密码:");
gets(psw); //输入密码字符串
if(strcmp(name,user)!=0||strcmp(password,psw)!=0)
printf("用户名和密码错误,请重新输入!\n");
}while(strcmp(name,user)!=0||strcmp(password,psw)!=0);
printf("\n欢迎您 :%s",user);
return 0;
}
如何利用以下给的条件进行密码不回显的代码输出?
1、psw[i]=getch(); //输入的字符存储在psw[i]中,不回显
2、putch('*'); //输入一个'*'字符来在屏幕上代替刚输出的字符
3、psw[i]='\0'; //在字符串的尾部加上'/0'
怎样将这几个代码加进去,得到密码不回显的要求?
加上相应头文件,再把相应代码修改后放在获取密码字符串的位置即可.
修改如下:
参考链接:
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
int main()
{
char name[]="ad",password[]="1234";
char user[100],psw[100];
int i=0;
do{ //如果用户名或者密码任一个错误,重新在输入
i=0;
printf("请输入用户名:");
gets(user); //输入用户名字符串
strlwr(user); //将输入的字符串全部转化为小写
printf("请输入密码:");
//gets(psw); //输入密码字符串
// https://blog.csdn.net/qq_45571006/article/details/123327524
psw[i]=getch(); //输入的字符存储在psw[i]中,不回显
if(psw[i]!=13){ // 如果输入的不是回车,则回显
putch('*'); //输入一个'*'字符来在屏幕上代替刚输出的字符
}
// http://ascii.wjccx.com/
while(psw[i]!=13){ // 如果没有输入回车,则将字符存于密码字符数组中
// printf("psw[%d]=%c,%d\n",i,psw[i],psw[i]);
i++; // 指向密码字符数组下一个字符位置
psw[i]=getch(); //输入的字符存储在psw[i]中,不回显
if(psw[i]!=13){ // 如果输入的不是回车,则回显
putch('*'); //输入一个'*'字符来在屏幕上代替刚输出的字符
}
}
// printf("psw[%d]=%c,%d\n",i,psw[i],psw[i]);
psw[i]='\0'; //在字符串的尾部加上'/0'
if(strcmp(name,user)!=0||strcmp(password,psw)!=0)
printf("\n用户名和密码错误,请重新输入!\n");
}while(strcmp(name,user)!=0||strcmp(password,psw)!=0);
printf("\n欢迎您 :%s",user);
return 0;
}