I have linked list userStack
of type user
我有类型user的链接列表userStack
struct user {
int id; // ID
char login[20]; // login
char password[32]; // password md5
user *next;
};
That's function for adding nodes to it:
这是向其添加节点的功能:
void addUser(user **userStack) {
if (*userStack == NULL)
{
user *p = new user;
*p = enterUser();
p->next = NULL;
*userStack = p;
}
else
{
user *p = new user;
*p = enterUser(); / returns struct user (keyboard input)
p->next = *userStack;
*userStack = p;
}
printf("User is added successfully!\n");
}
user enterUser() {
user *u = new user;
int tmpID = -1;
char tmpLogin[20];
char tmpPass[20];
char tmpPass2[20];
std::string hashPass;
system("cls");
fflush(stdin);
printf("Введите id пользователя: ");
scanf("%d", &tmpID);
while (isUserExists(tmpID) || tmpID < 0){
fflush (stdin);
if (isUserExists(tmpID))
printf ("!!! Пользователь с таким id уже существует. \n");
if (tmpID < 0)
printf ("!!! ID пользователя не может быть отрицательным! \n");
printf("Введите id пользователя: ");
scanf ("%d", &tmpID);
}
u -> id = tmpID;
fflush(stdin);
printf("Введите имя пользователя: ");
gets(tmpLogin);
fflush(stdin);
while (isUserExistsLogin(tmpLogin)){
printf ("!!! Пользователь с таким именем уже существует. \n");
printf("Введите имя пользователя: ");
gets(tmpLogin);
fflush(stdin);
}
strcpy(u -> login, tmpLogin);
printf("Введите пароль пользователя: ");
scanf ("%s", &tmpPass);
printf ("Введите пароль повторно: ");
scanf ("%s", &tmpPass2);
while (strcmp(tmpPass, tmpPass2) != 0){
if (strcmp(tmpPass, tmpPass2) != 0)
printf ("!!! Пароли не совпадают!\n");
printf("Введите пароль пользователя: ");
scanf ("%s", &tmpPass);
fflush (stdin);
printf ("Введите пароль повторно: ");
scanf ("%s", &tmpPass2);
}
hashPass = md5(tmpPass);
strcpy(u->password, hashPass.c_str());
printf("\n");
return *u;
}
When I'm adding first node all is OK.
当我添加第一个节点时,一切正常。
But when I'm adding 2nd and other I have trouble in line p->next = *userStack;
. This line correctly changes pointer but adds garbage to the end of password
.
但是,当我添加第二个和其他时,我遇到麻烦的行p-> next = * userStack;。此行正确更改指针但在密码末尾添加垃圾。
That's my trouble. Thanks.
那是我的麻烦。谢谢。
1 个解决方案
#1
0
Problem was in password array. Increasing length solved it.
问题出现在密码数组中。增加长度解决了它。
Thanks for code optimization advices.
感谢代码优化建议。
#1
0
Problem was in password array. Increasing length solved it.
问题出现在密码数组中。增加长度解决了它。
Thanks for code optimization advices.
感谢代码优化建议。