C - Динамическое выделение памяти - копировать строку

Если вы не хотите, чтобы выходные дни отображались вообще, просто:

CSS

th.ui-datepicker-week-end,
td.ui-datepicker-week-end {
    display: none;
}
0
задан Robert Korber 5 March 2019 в 18:37
поделиться

1 ответ

Вам не нужно копировать данные, когда realloc возвращает другой указатель - это сделано для вас. На самом деле это ошибка , потому что вы копируете данные из источника, которого больше нет, и вдвое больше, чем было! Таким образом, вам нужно только

data = data_new;

Также эта строка неверна

data[len] = '0';

она должна быть

data[len] = '\0';

и также может записывать за пределы памяти. Вы должны проверить размер еще раз, прежде чем писать терминатор, или, проще, перераспределить память при использовании size-1, поскольку вы знаете, что вам понадобится этот дополнительный байт.

if(len == size - 1) {
    // . . . 
}

Также обратите внимание, что если вы вводите символы, каждый из которых разделен новой строкой, то getchar() будет читать и каждую новую строку.

0
ответ дан Weather Vane 5 March 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: