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;
    }

Antworten auf die Frage(3)

Ihre Antwort auf die Frage