Эта часть моего кода касается регистрации.Как сохранить строку в динамическом массиве 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;
}
}
[НЕ использовать 'gets()', это опасно] (http://stackoverflow.com/q/1694036/2173917). используйте вместо этого '' fgets() '] (https://linux.die.net/man/3/fgets). –
'free (buffer);'!? – BLUEPIXY
Все, что я вижу здесь, очень опасный код и эксплойты. Я недостаточно разбираюсь в C, чтобы охватить исправления, не введя другие ошибки, но есть использование после бесплатных, gets() проблем, и я не вижу, как вы управляете (подсчитываете) свои ссылки, так что утечки и ошибки вероятно, произойдут. – gelliott181