Что не так с фредом в этой программе?
Я учусь на среднем C. Я пытаюсь создать программу управления банком, но сначала мне нужно создать программу входа в систему, поэтому я создал одну из следующих. Как я недавно узнал о файловом вводе / выводе в C, я не очень разбираюсь в fread и fwrite. У меня есть файл (data.txt), формат которого, как показано ниже.
user1 1124
user2 3215
user3 5431
В следующей программе я попросил пользователя ввести имя пользователя и пин-код (4-значный пароль) и скопировать данные файла в структуру, а затем сравнить эти два для проверки информации.
Что не так с моей программой и как заставить фред работать правильно. И форматирование в файле data.txt все в порядке, или я должен изменить его.
Заранее спасибо...
#include<stdio.h>
#include<ctype.h>
#include<string.h>
struct user_account {
char u_name[30];
int u_pin;
} log_in;
int login()
{
int start;
int i, n;
int t_pin[4]; // TEMPORARY INT PIN for storing pin inputed by user
char t_name[30]; // TEMPORARY STRING for storing name inputed by user
FILE *fp;
fp = fopen("data.txt","rb"); // Opening record file
if(fp == NULL)
{
puts("Unable to open file!");
return 1;
}
start : {
printf("User Name : ");
scanf("%s",&t_name);
printf("Pin Code : ");
for(i = 0; i < 4; i++) { // This loop is for hiding input pin
n = getch();
if(isdigit(n)) {
t_pin[i] = n;
printf("*"); }
else {
printf("\b");
i--;
}
}
fread(&log_in,sizeof(log_in),1,fp);
// Comparing user name and pin with info in the structure copied from the file
if(strcmp(log_in.u_name, t_name) == 0 && log_in.u_pin == t_pin)
puts("Login successful! Welcome User");
else {
printf("\nIncorrect Information!\n");
printf("Press any key to log in again...");
getch();
system("cls");
goto start; }
}
}
int main()
{
int login();
return 0;
}