gpt4 book ai didi

c - 如何让这对 3 个用户有效并通过而不是 1 个 C

转载 作者:行者123 更新时间:2023-11-30 16:30:19 28 4
gpt4 key购买 nike

**所以我有2个txt文件。一个是密码,另一个是登录名。我想出了如何让它适用于 1 次登录和 1 次通行证。与 pass txt 的 3 个密码相比,如何使其适用于一份 txt 中的 3 次登录。在 C 语言中 **

int main()
{
FILE*p1;
int login;
char buf1[15];
char buf2[15];
p1=fopen("login.txt","rt");
fgets(buf1,15,p1);
login=strcmp(buf1,p1);
fclose(p1);
FILE*p2;
int password;
p2=fopen("password.txt","rt");
password=strcmp(buf2,p2);
fgets(buf2,15,p2);
fclose(p2);
printf("Login: ");
scanf("%s", p1);
printf("Password: ");
scanf("%s", p2);

if(strcmp(buf1, p1))

if(strcmp(buf2, p2))
{
printf("\nIncorrect!\n");
}
else

printf("\nWelcome!\n");

}

最佳答案

  1. 声明您需要的四个个字符串缓冲区:char username[50], password[50], tryuser[50], trypass[50]; .
  2. 摆脱login=strcmp(buf1, p1)password=strcmp(buf2, p2)来电。这些都是没有意义的,没有任何作用。 (除此之外,您甚至还没有阅读用户的输入来进行比较。)
  3. 提示用户输入用户名和密码,并将其读入 usernamepassword 。 (为此,您可以继续使用scanf。)
  4. 打开这两个文件进行阅读。
  5. 输入一个循环。每次循环时,从 login.txt 读取一个用户名进入tryuser和一个密码 password.txt进入trypass 。当任一读取失败时,停止(跳出)循环。您可以继续使用fgets为此,或者您可以使用 fscanf这里也。 (我自己不会使用它,但您可能会发现它很有优势。)我将在下面对这个循环进行更多说明。
  6. 如果您使用 fgets阅读tryusertrypass ,它们包含换行符 ( '\n' )。这会干扰字符串匹配。消除这个换行符,也许可以通过调用 strtok(tryuser, "\n") (trypass 也是如此)。
  7. 比较 usernametryuserpasswordtrypass ,使用类似两个 if 的东西你已经有了的陈述。您的strcmp不过,调用被颠倒了——以测试 username 是否有效。匹配tryuser ,你想要if(strcmp(username, tryuser) == 0) .
  8. 安排,如果用户名匹配,则无论密码是否匹配,都跳出循环。但如果用户名不匹配,则继续循环到下一个行程。 (您仍在寻找匹配的用户名。)

让一个循环同时做两件事有点棘手 - 在本例中,从 p1 读取一个用户名和一个密码 p2 ——当其中任何一个失败时,这种情况就会停止。一种编写方法是

while(fgets(tryuser, 50, p1) != NULL && fgets(trypass, 50, p2) != NULL)

关于c - 如何让这对 3 个用户有效并通过而不是 1 个 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51223165/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com