This sounds a little like an interview question,but is actually a practical problem.
I am working with an embedded platform, and have available only the equivalets of those functions:
THAT_MACRO("Number of bunnies: %d", numBunnies);
Since you can use C99, I'd wrap it in a variadic macro:
#define TM_PRINTF(f_, ...) printf((f_), __VA_ARGS__) #define TM_SNPRINTF(s_, sz_, f_, ...) snprintf((s_), (sz_), (f_), __VA_ARGS__)
since you didn't say that you have
vprintf or something like it. If you do have something like it, you could wrap it in a function like Sergey L has provided in his answer.