Я создаю систему входа в систему. Просто базовое, имя пользователя и пароль.Обработка файлов и строки (Вход в систему)
=====Log in===
user: abcd
pass: ****
==============
не более 4 буквенно-цифровых символов.
struct account
{
user[5];
pass[5];
}s;
Например, в моем файле database.txt
у меня уже есть это.
abcd //user
1234 //pass
Таким образом, в основной его так:
main()
{
FILE *fp;
fp=fopen("account.txt","r");
char user[5],pass[5];
printf("enter user: ");
gets(user);
printf("enter pass: ");
pass[0] = getch();
printf("*"); //doing this for
pass[1] = getch(); //password security
printf("*"); //asterisk(*)
pass[2] = getch();
printf("*");
pass[3] = getch();
printf("*");
pass[4] = '0';
getch();
while(fread(&s,sizeof(s),1,fp)==1);
{
if(ferror(fp))
{
printf("error");
}
else if (strcmp(s.user,user) == 0 && strcmp(s.pass,pass) == 0)
{
printf("success!");
}
else
{
printf("invalid");
}
}
getch();
}
проблема в том, что не работает. Когда я поставлю правильный пароль, он всегда будет признавать недействительным. но когда я использую
gets(pass);
, а не pass[0]=getch();
он отлично работает.
Правильный ли это способ защиты паролем и его чтение?
Вы убедились, что вы правильно читаете данные из файла? –
@ScottHunter Да, не возникло проблем при использовании gets (pass); , – imagineracoon