Was stimmt nicht mit fread in diesem Programm?
Ich bin ein fortgeschrittener Schüler von C. Ich versuche, ein Bankverwaltungsprogramm zu erstellen, aber zuerst muss ich ein Anmeldeprogramm erstellen, also habe ich eines der folgenden erstellt. Da ich kürzlich etwas über Datei-E / A in C gelernt habe und nicht viel über Fread und Fwrite weiß. Ich habe eine Datei (data.txt), deren Format wie folgt lautet.
user1 1124
user2 3215
user3 5431
Im folgenden Programm habe ich den Benutzer gebeten, den Benutzernamen und die PIN (4-stelliges Passwort) einzugeben und die Dateidaten in eine Struktur zu kopieren. Anschließend habe ich diese beiden zur Überprüfung der Informationen verglichen.
Was ist los mit meinem Programm und wie kann ich Fread zum Laufen bringen? Und ist das Formatieren in der Datei data.txt in Ordnung oder soll ich es ändern?
Danke im Voraus...
#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;
}