gpt4 book ai didi

c - 在 c 中使用 fscanf() 时变量被更改

转载 作者:行者123 更新时间:2023-11-30 14:46:14 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的用户名/密码身份验证系统。目前我的用户名可以正常工作并正确比较字符串,但我发现我的变量“密码”正在更改。假设用户名是“James”,密码是“123456”,用户名工作正常并且比较正确,但是密码正确地传递给了方法,但是在 while (fscanf(file, "%s %s\n", file_username, file_password) > 0) 行上,“password”变量突然更改为“James”,这是然后与文件变量 file_password 进行比较。

bool authenticate_login(char *username, char *password)
{
printf("\nMade it to authentication_login\n");

FILE *file;
char *file_username;
char *file_password;
bool match;
printf("\n%s\n", username);
printf("\nThe password is coming in as: %s\n", password);

if ((file = fopen("Authentication.txt", "r")) == NULL) {
perror("fopen");
return false;
}

while (fgetc(file) != '\n'); /* Move past the column titles in the file. */

/* Each line in the file contains the username and password separated by a white space. */
while (fscanf(file, "%s %s\n", file_username, file_password) > 0) {
printf("\n TESTING THIS LINE: %s", password);

/* Check if the username matches one in the file, and if the password matches for that username. */
printf("\n\n%s",file_username);
printf("\n%d",strcmp(file_username, username));
printf("\n\n%s",file_password);
printf("\n%s", password);
printf("\n%d",strcmp(file_password, password));

if (strcmp(file_username, username) == 0 && strcmp(file_password, password) == 0) {
match = true;
break;
}
}

fclose(file);
return match;
}

最佳答案

您不应使用 file_usernamefile_password 指针,而应使用 char 数组。

#define MAX_USERNAME 20
#define MAX_PASSWORD 80

char file_username[MAX_USERNAME];
char file_password[MAX_PASSWORD];

关于c - 在 c 中使用 fscanf() 时变量被更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52464022/

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