Если вы хотите выделить массив какого-либо типа, вы обычно умножаете количество нужных вам элементов на размер этого типа, потому что malloc
принимает размер массива в байт .
Однако массив char
- это особый случай; вам не нужно умножать количество элементов, которое вы хотите, на sizeof(char)
, потому что sizeof(char)
определяется стандартом на всегда быть 1
, а умножение на 1 дает другой операнд.
+ 1
должен освободить место для терминатора NUL
. Если вам нужна строка длиной n
, ваш массив должен иметь длину n + 1
; n
пробелы для n
символов строки и 1
пробелы для терминатора.
Кстати, вы не должны разыгрывать возвращаемое значение malloc
. Это сделает ваш код легче изменить в будущем.