Как я могу сохранить строку в динамическом 2d массиве?

Эта часть моего кода о регистрации.

Я могу зарегистрироваться только один раз, в следующий раз программа остановится.

В чем проблема?

while (1) { /*usercounter initialized with 0*/
    printf("enter your order:\n");
    gets(buffer);
    order = strtok(buffer, " ");
    if (strcmp(order, "signup") == 0) {
        usercounter++;
        if (usercounter > 50) {
            username=realloc(username,usercounter*sizeof(*username));
            password=realloc(password, usercounter*sizeof(*password));
        }
        username[(usercounter - 1)] = (char *)malloc(50*sizeof(char));
        strcpy(username[usercounter - 1], strtok(NULL, " "));
        password[(usercounter - 1)] = (char *)malloc(50*sizeof(char));
        strcpy(password[usercounter - 1], strtok(NULL, "\n"));
        free(buffer);
        continue;
    }
}

1 ответ

free(buffer);

почему это используется, это приведет к неопределенному поведению, вы освобождаете статическую память. Удалить приведенное выше утверждение.

Отдых в порядке.

Другие вопросы по тегам