// 从文件中读取用户名和密码 FILE* fp = fopen("User_list.txt", "r"); fscanf(fp, "%s %s", List_username, List_password); fclose(fp); // 获取界面上输入的用户名和密码 GetCtrlVal(L_Panel, L_username_CtrlID, username); GetCtrlVal(L_Panel, L_password_CtrlID, password); // 比较用户名和密码是否匹配 if (strcmp(username, List_username) == 0 && strcmp(password, List_password) == 0) { MessagePopup("欢迎", "密码正确!"); } else { MessagePopup("错误", " 用户不存在或密码不正确!"); } }如何将该段代码优化为可将用户输入和整个txt文件对比
时间: 2023-11-22 16:55:15 浏览: 127
可以使用一个循环来遍历整个文件,逐行读取用户名和密码进行比较。以下是一个可能的优化代码:
```
// 获取界面上输入的用户名和密码
GetCtrlVal(L_Panel, L_username_CtrlID, username);
GetCtrlVal(L_Panel, L_password_CtrlID, password);
// 打开文件并逐行读取
FILE* fp = fopen("User_list.txt", "r");
char line[100];
bool match_found = false;
while (fgets(line, 100, fp)) {
// 分离用户名和密码
char List_username[50], List_password[50];
sscanf(line, "%s %s", List_username, List_password);
// 如果用户名和密码匹配,显示欢迎消息并退出循环
if (strcmp(username, List_username) == 0 && strcmp(password, List_password) == 0) {
MessagePopup("欢迎", "密码正确!");
match_found = true;
break;
}
}
// 关闭文件并显示错误消息(如果没有找到匹配)
fclose(fp);
if (!match_found) {
MessagePopup("错误", " 用户不存在或密码不正确!");
}
```
这个代码使用了一个 `while` 循环来逐行读取文件,每次读取一行并解析出用户名和密码进行比较。如果找到了匹配,就显示欢迎消息并设置一个标志变量 `match_found` 为 `true`,然后退出循环。如果没有找到匹配,就在循环结束后显示错误消息。
阅读全文