int login_menu() { int i; User u1,u2; printf("请输入您的用户名:"); scanf("%s",u2.name); printf("请输入您的密码:"); scanf("%s",u2.password); for(i=0;i<NUM;i++) { u1=user[i]; if(strcmp(u1.name,u2.name)==0&&strcmp(u1.password,u2.password)==0) { printf("登录成功!\n"); user_menu(); return 1; } } printf("用户名或密码输入错误,请重新输入!\n"); return 0; }改正这段代码的错误
时间: 2024-03-24 14:38:03 浏览: 28
这段代码的错误在于没有为 `u2.name` 和 `u2.password` 分配内存空间,因此在运行时会导致程序崩溃。可以通过为这两个变量分配足够的内存空间来解决这个问题。修改后的代码如下:
```
int login_menu() {
int i;
User u1, u2;
printf("请输入您的用户名:");
scanf("%s", u2.name);
printf("请输入您的密码:");
scanf("%s", u2.password);
for (i = 0; i < NUM; i++) {
u1 = user[i];
if (strcmp(u1.name, u2.name) == 0 && strcmp(u1.password, u2.password) == 0) {
printf("登录成功!\n");
user_menu();
return 1;
}
}
printf("用户名或密码输入错误,请重新输入!\n");
return 0;
}
```
另外,为了避免缓冲区溢出,可以使用 `fgets` 函数代替 `scanf` 函数来读取输入的用户名和密码,具体实现方法可以参考下面的代码:
```
int login_menu() {
int i;
User u1, u2;
printf("请输入您的用户名:");
fgets(u2.name, MAX_NAME_LENGTH, stdin);
u2.name[strcspn(u2.name, "\n")] = '\0'; // 去掉输入字符串中的换行符
printf("请输入您的密码:");
fgets(u2.password, MAX_PASSWORD_LENGTH, stdin);
u2.password[strcspn(u2.password, "\n")] = '\0'; // 去掉输入字符串中的换行符
for (i = 0; i < NUM; i++) {
u1 = user[i];
if (strcmp(u1.name, u2.name) == 0 && strcmp(u1.password, u2.password) == 0) {
printf("登录成功!\n");
user_menu();
return 1;
}
}
printf("用户名或密码输入错误,请重新输入!\n");
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)