我正在嘗試創建一個程式以使用用戶名和密碼進入系統。但是在創建帳戶后,當我輸入用戶名和密碼(從注冊功能存盤)登錄時,它顯示不正確。我在哪里犯了錯誤,我該如何解決?我已經給出了與此問題相關的特定代碼。TIA
struct information
{
char username[20];
char password[20];
int date, month, year;
char pnumber[20];
int age[20];
char fname[20];
char lname[20];
char fathname[20];
char mothname[20];
char address[50];
};
void signup()
{
char username[20];
char password[20];
int passwordlength, i, seek = 0;
char ch;
FILE *fp, *fu;
struct information u1;
struct information p1;
// Opening file to
// write data of a user
fp = fopen("username.txt", "ab");
system("cls");
printf("\n\n!!!!!CREATE YOUR ACCOUNT!!!!!");
printf("\n\nFIRST NAME...");
scanf("s", u1.fname);
printf("\nLAST NAME...");
scanf("s", u1.lname);
printf("\nFATHER's NAME...");
scanf("s", u1.fathname);
printf("\nMOTHER's NAME...");
scanf("s", u1.mothname);
printf("\nADDRESS..");
scanf("s", u1.address);
printf("\nDATE OF BIRTH...");
printf("\nDATE-");
scanf("%d", &u1.date);
printf("\nMONTH-");
scanf("%d", &u1.month);
printf("\nYEAR-");
scanf("%d", &u1.year);
printf("\nPHONE NUMBER...");
scanf("s", u1.pnumber);
printf("\nAGE...");
scanf("%d", &u1.age);
printf("\nUSERNAME.. ");
scanf("s", u1.username);
printf("\nPASSWORD..");
scanf("s", p1.password);
fwrite(&u1, sizeof(u1), 1, fp);
fclose(fp);
printf("\n\nACCOUNT CREATED SUCCESSFULLY.\n");
char option[10];
printf("\nPRESS ANY KEY THEN ENTER TO GO TO SIGN IN PAGE");
scanf("%s", option);
signin();
}
void signin()
{
system("cls");
char username[20];
char password[20];
int i, j, k;
char ch;
FILE *fp, *fu;
struct information u1;
struct information p1;
// Opening file of
// user data
fp = fopen("username.txt","rb");
if (fp == NULL)
{
printf("\nERROR IN OPENING FILE\n");
printf("FILE DOESN'T EXIST\nYOU HAVE TO CREATE AN ACCOUNT FIRST\n");
printf("PRESS ANY KEY & ENTER TO CREATE AN ACCOUNT\n");
char option[10];
scanf("%s", option);
signup();
}
gotoxy(35, 10);
printf("==== LOG IN ====");
// Take input
gotoxy(35, 12);
printf("ENTER USERNAME.. ");
scanf("s", username);
gotoxy(35, 14);
printf("ENTER PASSWORD.. ");
scanf("s", password);
// Checking if username & password
// exists in the file or not
while (fread(&u1, sizeof(u1), 1, fp))
{
if (strcmp(username, u1.username) == 0)
if (strcmp(password, u1.password) == 0)
{
mainmenu();
}
fclose(fp);
}
uj5u.com熱心網友回復:
在該signup()函式中,您將密碼讀入該p1.password欄位,但隨后僅將u1結構寫入檔案。只需更改scanf("s", p1.password);為scanf("s", u1.password);.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/336473.html
