2015-10-25 2 views
1

Как выделить память для заданного массива символов * bla в c?Выделение памяти для строки в c?

blaarray = (char*)malloc(strlen(bla)*sizeof(bla)); 

или

blaarray = (char*)malloc(strlen(bla)*sizeof(char*)); 

или ни?

благодаря

** примечание редактирует, чтобы отразить глупую опечатку. Я случайно вставил варианты неправильно

+0

Ваше последнее предположение: ни. В обоих случаях скобки не совпадают в парах, поэтому непонятно, что вы пытаетесь сделать. Но я предполагаю, что достаточно выделить память для хранения одной переменной типа 'size_t'. –

ответ

6

Если вы хотите 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)); 
+0

это имеет смысл. Благодарю. только один вопрос. если я в конечном итоге не следую 5, нужно еще 4? – elmehi

Смежные вопросы