Массив в C - это просто место в памяти, поэтому ваше присвоение my_custom_data[0] = '\0';
просто устанавливает первый элемент на ноль и оставляет другие элементы без изменений.
Если вы хотите очистить все элементы массива, вам придется посетить каждый элемент. Вот для чего memset
:
memset(&arr[0], 0, sizeof(arr));
Как правило, это самый быстрый способ позаботиться об этом. Если вы можете использовать C ++, рассмотрите вместо этого std :: fill:
char *begin = &arr;
char *end = begin + sizeof(arr);
std::fill(begin, end, 0);