Вы можете перебрать строку, печатая символы по одному, и условно выбрать печать символа или escape-последовательности:
char *str, // the original string
*tmp;
for(tmp = str; *tmp; tmp++)
{
printf((iscntrl(*tmp) ? "%02x\n" : "'%c'\n"), *tmp);
}
Печатает по одному символу в строке, контрольные символы печатаются в шестнадцатеричном формате.