As @FlopCoder said:
enum Colours
{
Red =0,
Green=1,
Blue=2
};
char* ColourNames[] = { "Red", "Green", "Blue" };
int colour = Green;
printf( "Invalid colour '%s' selected.", ColourNames[ colour ] );
This of course will only work if your enum starts at 0 and is continuous.
@Nawaz's way is more C++ stylish though.