Потому что вы не можете напечатать символ с форматированием строки.Вы также можете подумать о добавлении формата с чем-то вроде этого
#define PRINTC(c,f,s) printf ("\033[%dm" f "\033[0m", 30 + c, s)
f
формат как в printf
PRINTC (4, "%s\n", "bar")
напечатает blue bar
PRINTC (1, "%d", 'a')
напечатает red 97