Как избавиться от мусора значение символа* динамически распределяется

#arrays #c #string #char #malloc

Вопрос:

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

 char* str = (char*)malloc(10*sizeof(char));  

так как я хочу использовать этот символ* для объединения строк после, поэтому я хочу знать, как не иметь значения мусора, как показано ниже,

 printf("str looks like this %sn",str);  

тогда вывод будет

 譁�蟄怜  

Кроме того, это происходит, когда я использую Ubuntu, но не происходит с mac. Как мне убедиться, что в нем нет мусорных значений, чтобы я мог красиво объединить их позже?

Комментарии:

1. Рассмотрим calloc

Ответ №1:

Самый дорогой способ-использовать calloc функцию.

 char* str = calloc(10, sizeof(*str));  

Самый быстрый способ:

 char* str = malloc(10 * sizeof(*str)); *str = 0;  

Ответ №2:

… как не иметь мусорной ценности …
Как мне убедиться, что в нем нет мусорных значений, чтобы я мог красиво объединить их позже?

Используйте calloc() для нулевого заполнения выделенной памяти.

 char* str = calloc(10, sizeof *str); if (str) {  printf("str looks like this lt;%sgt;n",str); }