簡體   English   中英

如何在 c 編程中使用文件存儲多個數據並將其中的特定數據與用戶數據進行比較?

[英]How to store multiple data using file and compare a specific data from it to user data in c programming?

我創建了 2 個 function。 一個用於登錄,另一個用於注冊。 它僅適用於一個用戶,但對於多個用戶它不起作用。 它只從文件中讀取前兩個字符串。 如何修復它並使其從文件中讀取第二組或更多組數據? 這是我的代碼:

//login (reading data)
login() {
    system("cls");
    system("color 3");
    char username[10], password[10], un[10], pwd[10];
    FILE *fp;
    fp = fopen("stored_data.txt","r");
    fscanf(fp, "%s%s", username, password);
    printf("Enter your username: ");
    fflush(stdin);
    gets(un);
    printf("Enter your password: ");
    fflush(stdin);
    gets(pwd);
    if ((strcmp(username,un)==0)&&(strcmp(password,pwd)==0)) {
        printf("Login successful, welcome %s.\n",un);
    }
    else {
        system("cls");
        system("color 4");
        printf("Invalid username or password.");
    }
    fclose(fp);
}
//Sign up (store data)
signup() {
    system("cls");
    system("color 3");
    char username[10], un[10], pwd[10];
    FILE *fp;
    fp = fopen("stored_data.txt","r");
    fscanf(fp, "%s", username);
    fp = fopen("stored_data.txt","a");
    printf("Enter your username: ");
    fflush(stdin);
    gets(un);
    if((strcmp(username,un)==0)) {
        printf("User already existed.\n");
    }
    else {
        printf("Enter your password: ");
        fflush(stdin);
        gets(pwd);
        fprintf(fp,"%s %s",un,pwd);
        printf("New user's information added successfully.\n");
    }
    fclose(fp);
}

您應該在用戶輸入他的姓名和密碼后查找該姓名。 通過這條線

fscanf(fp, "%s%s", username, password);

您正在讀取文件中的第一個用戶名和密碼。 相反,您應該將其移至 while 循環中。

...
printf("Enter your username: ");
fflush(stdin);
gets(un);
printf("Enter your password: ");
fflush(stdin);
gets(pwd);
while(!feof(fp)){
    fscanf(fp, "%s%s", username, password);
    if (strcmp(username,un) == 0){
        if(strcmp(password, pwd) == 0)
            printf("Login successful, welcome %s.\n",un);
        else break;
    }
}
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM