При динамическом назначении памяти в C для строк, считаете ли вы конец \0 строки char?

При динамическом назначении памяти в C для строк, считаете ли вы конец \0 строки char?

char *copyInto, *copyFrom="test";

// Should 
copyInto = (char*)malloc(strlen(copyFrom));
// suffice?

// or should this be the following?
copyInto = (char*)malloc(strlen(copyFrom)+1);

// assuming you want to copy the string from copyFrom into copyInto
strcpy(copyInto,copyFrom);

// Does anyone recommend just \0-ing the whole copyInto as in
copyInto = (char*)calloc(strlen(copyFrom)+1);
// and if so, should it still be (strlen(copyFrom)+1) size?

1 ответ

Решение
  1. Не бросайте возвращаемые значения malloc() или же calloc() (или же realloc() в этом отношении) в программе на Си.
  2. Да, вам нужно иметь +1,
  3. Зачем использовать calloc() обнулить всю строку, если вы собираетесь сразу скопировать в нее? Похоже, трата циклов для меня.
Другие вопросы по тегам