我正在使用signed long long int
来计算用户输入的位数。如果 ID 和 Pin 不正确,程序应重复要求输入,并在输入正确的 ID 和 Pin 时显示“成功登录”。然而,当我输入正确的 ID 和 Pin 码时,程序会一遍又一遍地要求输入。我的代码做错了什么?非常感谢您的帮助。
这是我的代码:
#include <stdio.h>
int main()
{
long long n = 1234567,m = 123456;
int count = 0, count2 = 0, c, a;
do
{
printf("Enter student ID: ");
scanf("%lli", &n);
while (n != 0)
{
n /= 10;
++count;
}
if (count < 7 || count > 8)
printf("The Student ID should be in 7 or 8 digits, please try again\n");
} while(n != 1234567);
do
{
printf("Enter security pin: ");
scanf("%lli", &m);
{
c = a;
a++;
}
while (m != 0)
{
m /= 10;
++count2;
}
if (count2 < 6 || count2 > 6)
printf("Please enter a 6-digit pin\n");
if (a == 5)
{
printf("\nAccess Denied\n");
}
} while (m != 123456);
if (n == 1234567 && m == 123456)
printf("Successfully Login\n");
else
printf("Wrong password, try again\n");
return 0;
}
最佳答案
这里的问题在于逻辑:
scanf("%lli", &n);
while (n != 0)
{
n /= 10;
++count;
}
即使用户在 scanf 中给出了正确的学生 ID 作为 n=1234567,它在这里被划分为 n=n/10 ---> 这将分配 n=123456。在代码中,由于 while 循环逻辑,n 和 m 值永远不会等于正确值。这同样适用于密码。 如果你想检查密码长度和ID长度,最好使用字符串和atoi函数。
关于c - c中的登录验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40392283/