user-0 提问: 求大神帮忙！

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 11 楼 m0_46108109的回复:[quote=引用 10 楼 m0_46108109 的回复:]     printf("登录成功,欢迎您:%s\n", current_user->name);     return  current_user; 这里提前返回了。  User* temp = head; head如果不为空，那么temp是前一个用户的登陆信息。 head如果为空，后面就不能用temp。      while(temp!=NULL)     { if(temp->username==username&&temp->password==password)      temp->name=name;      temp=temp->next; } 这里应该用当前登陆信息current_user 应该直接修改current_user->name=name；不应该遍历后面的结构[/quote] 谢谢大佬！感谢！

user: user-0
content: 噢噢，原来如此，我懂了！我去试试，谢谢大佬

user: user-2
content: 引用 10 楼 m0_46108109 的回复:printf("登录成功,欢迎您:%s\n", current_user->name);     return  current_user; 这里提前返回了。  User* temp = head; head如果不为空，那么temp是前一个用户的登陆信息。 head如果为空，后面就不能用temp。      while(temp!=NULL)     { if(temp->username==username&&temp->password==password)      temp->name=name;      temp=temp->next; } 这里应该用当前登陆信息current_user 应该直接修改current_user->name=name；不应该遍历后面的结构

user: user-2
content: printf("登录成功,欢迎您:%s\n", current_user->name);     return  current_user; 这里提前返回了。  User* temp = head; head如果不为空，那么temp是前一个用户的登陆信息。 head如果为空，后面就不能用temp。      while(temp!=NULL)     { if(temp->username==username&&temp->password==password)      temp->name=name;      temp=temp->next; } 这里应该用当前登陆信息current_user

user: user-0
content: 引用 6 楼 m0_46108109的回复:printf("登录成功,欢迎您:%s\n", current_user->name);     return  current_user; 这里返回了。  而且安装你的逻辑关系。User* temp = head; temp要么为空，要么是上一个登录用户的结构。 那我直接把那个return current_user删除

user: user-0
content: 引用 6 楼 m0_46108109的回复:printf("登录成功,欢迎您:%s\n", current_user->name);     return  current_user; 这里返回了。  而且安装你的逻辑关系。User* temp = head; temp要么为空，要么是上一个登录用户的结构。 我就是想修改用户信息

user: user-0
content: 引用 6 楼 m0_46108109的回复:printf("登录成功,欢迎您:%s\n", current_user->name);     return  current_user; 这里返回了。  而且安装你的逻辑关系。User* temp = head; temp要么为空，要么是上一个登录用户的结构。 那我应该怎么改？

user: user-2
content: printf("登录成功,欢迎您:%s\n", current_user->name);     return  current_user; 这里返回了。  而且安装你的逻辑关系。User* temp = head; temp要么为空，要么是上一个登录用户的结构。

user: user-0
content: 我这样子写哪里错了，请指点

user: user-0
content: /*   * 修改用户信息   * @param head 头节点   */   User* fun(User* head){     char* name; 	User* temp = head; 	char* username = NULL;     char* password = NULL;      int flag = 1;      User* current_user = NULL;      while (current_user == NULL)      {                    printf("请输入用户名:\n");          username = (char*)calloc(USERNAME_LEN, sizeof(char));          scanf("%s", username);          printf("请输入密码:\n");          password = (char*)calloc(USERNAME_LEN, sizeof(char));          scanf("%s", password);                current_user = query2(head, username, password);          if(current_user == NULL){              printf("用户名或密码错误,输入1继续登录,输入0取消登录：");              scanf("%d", &flag);              if(flag == 0){                  return NULL;              }          }                }      printf("登录成功,欢迎您:%s\n", current_user->name);     return  current_user;          printf("请输入修改的姓名(最长%d位):\n", USERNAME_LEN);      name = (char*)calloc(USERNAME_LEN, sizeof(char));      scanf("%s", name);      printf("name:%s\n", name);     while(temp!=NULL)     { if(temp->username==username&&temp->password==password)     	temp->name=name;     	temp=temp->next; 	}      	printf("姓名修改成功");  	 }

user: user-0
content: 引用 2 楼 宾灬的回复:完成了一部分，剩下的你自己完成。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define USERNAME_LEN 32 // 用户信息结构体 typedef struct user{      char * username; // 用户名称      char * password; // 用户密码      char * name; // 用户姓名     // 其他信息...     struct user* next; // 下一个节点 }User; /**  * 打印用户信息  * @param head 头节点  */  void show_user(User* head){     User* temp = head;     if(temp == NULL){         printf("暂无用户信息,请先注册\n");         return;     }     printf("姓名\t用户名\t密码\n");     while (temp){         printf("%s\t%s\t%s\n", temp->name, temp->username, temp->password);         temp = temp->next;     } }  /**  * 销毁用户信息  * @param head 头节点  */ void release(User* head){     User* temp = head;     if(temp == NULL){         return;     }     User* next = temp->next;     while (temp){         printf("%s已销毁\n", temp->username);         free(temp->name);         free(temp->username);         free(temp->password);         free(temp);         temp = next;         if(temp != NULL){             next = temp->next;         }              } }  /**  * 保存用户信息  * @param head 头节点  * @param user 保存的用户信息  */ User* insert(User* head, User * user){      if(head == NULL){         return user;     }     head->next = user;     return head; } /**  * 根据用户名查找  * @param head 头节点  * @param username 用户名  */  User* query1(User* head, const char* username){     User* temp = head;          int r = 0;     while (temp){         r = strcmp(temp->username, username);         if(r == 0){             return temp;         }         temp = temp->next;     }     return NULL;      } /**  * 根据用户名和密码查找  * @param head 头节点  * @param username 用户名  * @param password 密码  */  User* query2(User* head, const char* username, const char* password){      User* temp = head;      int r = 0;     while (temp){         r = strcmp(temp->username, username);         if(r == 0){             r = strcmp(temp->password, password);             if(r == 0){                 return temp;             }             return NULL;                      }         temp = temp->next;     }     return NULL; }    /**  * 注册  * @param head 头节点(没有传NULL)  * @return 头节点  */ User* sign(User* head){     char* username = NULL;     char* password = NULL;     char* name = NULL;     printf("请输入用户名(英文和数字，最长%d位):\n", USERNAME_LEN);     username = (char*)calloc(USERNAME_LEN, sizeof(char));         scanf("%s", username);      User* user = query1(head, username);     int flag = (user != NULL);     while(flag){        printf("用户名已存在，请重新输入:\n");        scanf("%s", username);        flag = (strcmp(user->username, username) == 0);     }     printf("username:%s\n", username);      printf("请输入密码(最长%d位):\n", USERNAME_LEN);     password = (char*)calloc(USERNAME_LEN, sizeof(char));     scanf("%s", password);     printf("password:%s\n", password);      printf("请输入姓名(最长%d位):\n", USERNAME_LEN);     name = (char*)calloc(USERNAME_LEN, sizeof(char));     scanf("%s", name);     printf("name:%s\n", name);      User* new_user = (User*)calloc(1, sizeof(User));     new_user->username = username;     new_user->password = password;     new_user->name = name;     new_user->next = NULL;     head = insert(head, new_user);     printf("注册完成\n");     return head;  }  /**  * 登录  * @param head 头节点  * @return 登录成功后的用户信息 登录失败返回NULL  */ User* login(User* head){     char* username = NULL;     char* password = NULL;     int flag = 1;     User* current_user = NULL;     while (current_user == NULL)     {                  printf("请输入用户名:\n");         username = (char*)calloc(USERNAME_LEN, sizeof(char));         scanf("%s", username);         printf("请输入密码:\n");         password = (char*)calloc(USERNAME_LEN, sizeof(char));         scanf("%s", password);              current_user = query2(head, username, password);         if(current_user == NULL){             printf("用户名或密码错误,输入1继续登录,输入0取消登录：");             scanf("%d", &flag);             if(flag == 0){                 return NULL;             }         }             }      printf("登录成功,欢迎您:%s\n", current_user->name);     return current_user; }    int main(int argc, char* argv[]){     User* head = NULL;     int num = 1;     printf("\n");     printf("***************欢迎进入***************\n");     printf("0：退出系统   \t1：注册新用户\n");     printf("\n");     printf("2：展示所有用户\t3：清除所有用户\n");     printf("4：登录\t\n");      printf("\n");     printf("**************************************\n");     printf("\n");         while (num)     {         printf("输入编号，执行操作:");         scanf("%d", &num);         switch (num)         {         case 0:             release(head);             printf("再见,欢迎下次登陆\n");             break;         case 1:             head = sign(head);             break;         case 2:              show_user(head);             break;           case 3:              release(head);             head = NULL;             break;           case 4:             login(head);             break;                 default:             printf("不支持的操作\n");             break;         }     }     return 0; }   谢谢大佬，我会自己思考的！

user: user-3
content: 完成了一部分，剩下的你自己完成。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define USERNAME_LEN 32 // 用户信息结构体 typedef struct user{      char * username; // 用户名称      char * password; // 用户密码      char * name; // 用户姓名     // 其他信息...     struct user* next; // 下一个节点 }User; /**  * 打印用户信息  * @param head 头节点  */  void show_user(User* head){     User* temp = head;     if(temp == NULL){         printf("暂无用户信息,请先注册\n");         return;     }     printf("姓名\t用户名\t密码\n");     while (temp){         printf("%s\t%s\t%s\n", temp->name, temp->username, temp->password);         temp = temp->next;     } }  /**  * 销毁用户信息  * @param head 头节点  */ void release(User* head){     User* temp = head;     if(temp == NULL){         return;     }     User* next = temp->next;     while (temp){         printf("%s已销毁\n", temp->username);         free(temp->name);         free(temp->username);         free(temp->password);         free(temp);         temp = next;         if(temp != NULL){             next = temp->next;         }              } }  /**  * 保存用户信息  * @param head 头节点  * @param user 保存的用户信息  */ User* insert(User* head, User * user){      if(head == NULL){         return user;     }     head->next = user;     return head; } /**  * 根据用户名查找  * @param head 头节点  * @param username 用户名  */  User* query1(User* head, const char* username){     User* temp = head;          int r = 0;     while (temp){         r = strcmp(temp->username, username);         if(r == 0){             return temp;         }         temp = temp->next;     }     return NULL;      } /**  * 根据用户名和密码查找  * @param head 头节点  * @param username 用户名  * @param password 密码  */  User* query2(User* head, const char* username, const char* password){      User* temp = head;      int r = 0;     while (temp){         r = strcmp(temp->username, username);         if(r == 0){             r = strcmp(temp->password, password);             if(r == 0){                 return temp;             }             return NULL;                      }         temp = temp->next;     }     return NULL; }    /**  * 注册  * @param head 头节点(没有传NULL)  * @return 头节点  */ User* sign(User* head){     char* username = NULL;     char* password = NULL;     char* name = NULL;     printf("请输入用户名(英文和数字，最长%d位):\n", USERNAME_LEN);     username = (char*)calloc(USERNAME_LEN, sizeof(char));         scanf("%s", username);      User* user = query1(head, username);     int flag = (user != NULL);     while(flag){        printf("用户名已存在，请重新输入:\n");        scanf("%s", username);        flag = (strcmp(user->username, username) == 0);     }     printf("username:%s\n", username);      printf("请输入密码(最长%d位):\n", USERNAME_LEN);     password = (char*)calloc(USERNAME_LEN, sizeof(char));     scanf("%s", password);     printf("password:%s\n", password);      printf("请输入姓名(最长%d位):\n", USERNAME_LEN);     name = (char*)calloc(USERNAME_LEN, sizeof(char));     scanf("%s", name);     printf("name:%s\n", name);      User* new_user = (User*)calloc(1, sizeof(User));     new_user->username = username;     new_user->password = password;     new_user->name = name;     new_user->next = NULL;     head = insert(head, new_user);     printf("注册完成\n");     return head;  }  /**  * 登录  * @param head 头节点  * @return 登录成功后的用户信息 登录失败返回NULL  */ User* login(User* head){     char* username = NULL;     char* password = NULL;     int flag = 1;     User* current_user = NULL;     while (current_user == NULL)     {                  printf("请输入用户名:\n");         username = (char*)calloc(USERNAME_LEN, sizeof(char));         scanf("%s", username);         printf("请输入密码:\n");         password = (char*)calloc(USERNAME_LEN, sizeof(char));         scanf("%s", password);              current_user = query2(head, username, password);         if(current_user == NULL){             printf("用户名或密码错误,输入1继续登录,输入0取消登录：");             scanf("%d", &flag);             if(flag == 0){                 return NULL;             }         }             }      printf("登录成功,欢迎您:%s\n", current_user->name);     return current_user; }    int main(int argc, char* argv[]){     User* head = NULL;     int num = 1;     printf("\n");     printf("***************欢迎进入***************\n");     printf("0：退出系统   \t1：注册新用户\n");     printf("\n");     printf("2：展示所有用户\t3：清除所有用户\n");     printf("4：登录\t\n");      printf("\n");     printf("**************************************\n");     printf("\n");         while (num)     {         printf("输入编号，执行操作:");         scanf("%d", &num);         switch (num)         {         case 0:             release(head);             printf("再见,欢迎下次登陆\n");             break;         case 1:             head = sign(head);             break;         case 2:              show_user(head);             break;           case 3:              release(head);             head = NULL;             break;           case 4:             login(head);             break;                 default:             printf("不支持的操作\n");             break;         }     }     return 0; }

user: user-4
content: 要源码就自己百度去吧  具体问题不会，可以贴自己的代码，贴问题描述上来提问