strlen возвращает числовые символы из указателя, который вы даете, до нулевого символа (не считая), в вашем случае вы не помещаете нулевой символ в свой массив, поэтому strlen выходит из массива с неопределенным поведением
например do
char cp [6];
cp[0]=1;
cp[1]=1;
cp[2]=1;
cp[3]=1;
cp[4]=1;
cp[5] = 0;
printf("%zu\n", strlen(cp));
также обратите внимание, что я изменил формат, strlen возвращает size_t правильный формат для него: % zu
из-за того, что вы вставили в свой массив символы, имеющие код 1, этот символ, как правило, недоступен для записи, хотите ли вы '1 вместо 1?