#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); }