我不知道我的错误在哪里,我需要你的帮助。当我在用户名和密码中输入错误的数据时,它会询问是或否,再试一次。如果我输入Y为YES,我就不能再输入用户名了。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main() {
printf ("\n\t\t Welcome To Your Payroll Account!");
printf ("\n\t\t Please Enter Your Username & Password To Proceed.");
printf ("\n\t ********************************************************* \n \n \n");
char password [10], username [10], ch;
char name [10] = "username";
char pass[10] = "password";
char month, ename, address;
float regpay,regov,RD,RDOT,meal;
float SSS,PH,PI,Union,other,SSSsal,Loan,Hloan,ULoan,ELoan,TD;
float TE,Netpay;
int n,day,year,i;
char input;
char again = 'Y';
while (again == 'Y' || again =='y') {
printf("Username: ");
gets (username);
printf("Password: ");
for (i = 0; i<8; i++){
ch = getch();
password[i] = ch;
printf ("*");
}
password[i] = 0;
printf("\n Your password is: ");
for (i =0; i<8; i++) {
printf("%c", password[i]);
}
if(strcmp(pass,password) == 0 && strcmp(name,username) == 0) {
printf("\n \n You are logged in! \n");
printf("Enter # to proceed \n");
scanf("%c", &input);
} else {
printf("\n \n Incorrect username or password");
printf("\n\n Do you want to try again? YES(Y) / NO(N) \n");
printf("Continue? ");
scanf("%c", &again);
again;
if (again == 'N' || again == 'n') {
system ("pause");
return 0;
} else {
again;
}
}
}
system ("pause");
return 0;
}
答案 0 :(得分:0)
printf("Continue? ");
scanf("%c", &again);
again;
if (again == 'N' || again == 'n') {
system ("pause");
return 0;
} else {
again;
}
这里在使用char输入时你正在使用scanf()
所以会给出字符输入和输入。 再次获取输入字符,但输入将保留在缓冲区中。
当while循环迭代时,等待用户名输入的获取将自动从缓冲区输入字符,因此将跳过用户名输入。
解决方案是在
之后添加getch()scanf("%c", &again);
希望这会让你感到高兴。