【发布时间】:2021-12-11 06:50:20
【问题描述】:
我正在尝试创建一个程序以使用用户名和密码进入系统。但是在创建帐户后,当我输入我的用户名和密码(从 SignUP 功能存储)登录时,它显示不正确。我在哪里犯了错误,我该如何解决?我已经给出了与这个问题相关的具体代码。 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("%19s", u1.fname);
printf("\nLAST NAME...");
scanf("%19s", u1.lname);
printf("\nFATHER's NAME...");
scanf("%19s", u1.fathname);
printf("\nMOTHER's NAME...");
scanf("%19s", u1.mothname);
printf("\nADDRESS..");
scanf("%19s", 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("%19s", u1.pnumber);
printf("\nAGE...");
scanf("%d", &u1.age);
printf("\nUSERNAME.. ");
scanf("%19s", u1.username);
printf("\nPASSWORD..");
scanf("%19s", 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("%19s", username);
gotoxy(35, 14);
printf("ENTER PASSWORD.. ");
scanf("%19s", 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);
}
【问题讨论】:
-
请删除与您的问题无关的代码部分。
-
请清理您的代码以使其成为minimal reproducible example。例如删除所有注释掉的代码并删除所有不必要的代码,例如菜单。如果你付出努力,你更有可能得到答案,也许更重要的是,减少代码也是一种很好的调试技术,甚至可以让你自己找到问题。
-
您的代码会产生许多警告,甚至无法编译。除了因为在所有首都大喊大叫而受到严重冒犯。
-
@Barmar:那是怎么复制的?
-
您应该正确缩进您的代码,例如像您的 C 教科书中的示例一样。即使对于专家来说,也很难处理格式错误的代码,更不用说初学者了。