错误在哪里? C++密码输入代码
Where's the error? Code for password entry in C++
我是初学者。这个简单的密码代码执行后,即使输入正确的密码,它仍然显示无效。那里有人可以帮助我吗?
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
string username;
int password[4]={0},i,realname[4]={1,2,4,8},j,temp=0;
for(j=0;j<3;j++)
{
cout<<"\nUsername: ";
cin>>username;
if(username=="admin")
{
temp++;
}
cout<<"\nPassword: ";
for (i = 0; i < 4;i++)
{
password[i]=getch();
cout<<"*";
if(password[i]==realname[i])
{
temp++;
}
}
if(temp==5)
{
cout<<"Login Success!";
break;
}
else
{
cout<<"\nInvalid username or password.";
j=0;
}
}
}
你的代码给你 Invalid username or password
这是因为 temp
的值永远不会在 for
循环内更新。 if(password[i]==realname[i])
行的计算结果为 false
因为它试图比较用户输入的 ascii 表示形式,即 ¨[49, 50, 51, 52] 与 realname[1, 2, 4, 8] ] 大批。您必须将用户输入转换为 int
或将密码和真实姓名设为 char
类型。
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
string username;
int i, j, temp=0;
char realname[4]={'1', '2', '4', '8'};
char password[4] = {'0'};
for(j=0;j<3;j++)
{
cout<<"\nUsername: ";
cin>>username;
if(username=="admin"){
temp++;
}
cout<<"\nPassword: ";
for (i = 0; i < 4;i++)
{
password[i]=static_cast<char>(getch());
cout<<"*";
if(password[i]==realname[i])
{
temp++;
}
}
std::cout<< "\n";
if(temp == 5)
{
cout<<"Login Success!\n";
break;
}
else
{
cout<<"\nInvalid username or password\n.";
j=0;
}
}
}
我是初学者。这个简单的密码代码执行后,即使输入正确的密码,它仍然显示无效。那里有人可以帮助我吗?
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
string username;
int password[4]={0},i,realname[4]={1,2,4,8},j,temp=0;
for(j=0;j<3;j++)
{
cout<<"\nUsername: ";
cin>>username;
if(username=="admin")
{
temp++;
}
cout<<"\nPassword: ";
for (i = 0; i < 4;i++)
{
password[i]=getch();
cout<<"*";
if(password[i]==realname[i])
{
temp++;
}
}
if(temp==5)
{
cout<<"Login Success!";
break;
}
else
{
cout<<"\nInvalid username or password.";
j=0;
}
}
}
你的代码给你 Invalid username or password
这是因为 temp
的值永远不会在 for
循环内更新。 if(password[i]==realname[i])
行的计算结果为 false
因为它试图比较用户输入的 ascii 表示形式,即 ¨[49, 50, 51, 52] 与 realname[1, 2, 4, 8] ] 大批。您必须将用户输入转换为 int
或将密码和真实姓名设为 char
类型。
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
string username;
int i, j, temp=0;
char realname[4]={'1', '2', '4', '8'};
char password[4] = {'0'};
for(j=0;j<3;j++)
{
cout<<"\nUsername: ";
cin>>username;
if(username=="admin"){
temp++;
}
cout<<"\nPassword: ";
for (i = 0; i < 4;i++)
{
password[i]=static_cast<char>(getch());
cout<<"*";
if(password[i]==realname[i])
{
temp++;
}
}
std::cout<< "\n";
if(temp == 5)
{
cout<<"Login Success!\n";
break;
}
else
{
cout<<"\nInvalid username or password\n.";
j=0;
}
}
}