Цитата(Метценгерштейн @ Nov 15 2014, 02:51)

а если у меня массив символов не всегда 5, а может 3 или 4 быть.
То как?
просто печать массива не вывести никак?
если никак, то могу '\0' добавить концом
Понятие длины массива в общем случае неопределено. Его имя тождественно указателю на начало, но где у него конец - обычно известно лишь программисту, но не компилятору.
Впрочем, если массив задан так
char array[5] = {'a', 'b', 'c', 'd', 'e'}
то число элементов можно узнать, как sizeof(array), а потом столько раз прокрутить цикл, печатая по одному:
for(int i=0; i < sizeof(array); i++) printf( "%с", array[i]);
Символ же '\0' ни малейшего отношения к концу массива не имеет, поскольку может встретиться в любом его месте или не встретиться вообще. Однако он имеет отношение к символьным строкам (где байты - литеры): там он используется в качестве конца строки (но не перевода каретки!), поскольку символ с кодом '\0' изображения не имеет.
Поэтому вам надо четко определиться с тем, что вы собираетесь распечатывать - массив со всеми его элементами, или строку до последнего глазами видимого знака. И это не одно и тоже, т.к. строка может быть короче массива, куда она была записана. В этом случае массив служит буфером для этой строки.
P.S.
Например, код
char array[1000] = "text";
порождает массив длиной в 1000 байт, в котором заполнены (инициализированы) только первые 5 элементов: 4 буквы и '\0'. А за нулем и до самого конца - мусор.
Вот и решайте, вам 4 буквы надо напечатать или все 1000 байт вместе с мусором?