[英]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.