gpt4 book ai didi

c++ - 错误在哪里? C++密码输入代码

转载 作者:行者123 更新时间:2023-11-28 04:02:08 24 4
gpt4 key购买 nike

我是初学者。这个简单的密码代码执行后,即使输入正确的密码,它仍然显示无效。那里有人可以帮助我吗?

#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;
}
}
}

关于c++ - 错误在哪里? C++密码输入代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59334696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com