According to K&R C section 1.6, a char is a type of integer. So why do we need %c. And why can\'t we use %d for everything?
char
%c
%d
Because %d will print the numeric character code of the char:
printf("%d", 'a');
prints 97 (on an ASCII system), while
97
printf("%c", 'a');
prints a.
a