Если вы хотите blaarray
быть тем же размера, что и строка bla
blaarray = malloc((strlen(bla)+1) * sizeof(char));
Теперь позвольте мне объяснить некоторые моменты.
1) Для того, чтобы получить длину строки, используйте только strlen()
не sizeof
2) 1
должен быть добавлен, поскольку strlen()
не включает \0
характер при возвращении длины
3) char*
является указатель на char
, чтобы получить размер char
, следует сделать sizeof(char)
4) Конечно же вам нужно объявить blaarray
, которые вы можете сделать, как
char* blaarray;
5) Вам не нужно отбрасывать возвращение malloc()
см this.
6) sizeof(char)
1, поэтому вы можете пропустить это.
Итак, в целом ваш код должен выглядеть.
char* blaarray;
blaarray = malloc((strlen(bla)+1));
Ваше последнее предположение: ни. В обоих случаях скобки не совпадают в парах, поэтому непонятно, что вы пытаетесь сделать. Но я предполагаю, что достаточно выделить память для хранения одной переменной типа 'size_t'. –