int to char question

Then, no, you are not using sprintf() correctly.

The way you have c defined, it is a pointer. What does it point to? Nothing. And, yet, you as sprintf() to write to the memory pointed to by c.

char c[4];
sprintf(c, "%d", red);

would work.