No, porque no es un error de printf(), sino tuyo.
Lo que deberías que hacer, a mi entender, es crear dentro de la función la lógica de análisis necesaria para crear la salida adecuada. Lo que quiero decir con esto analizar los parámetros y valores que entran para descomponeros de modo de poder lograr lo que quieres.
No lograrás es que te "funcione bien" en el esquema actual, porque lo que está pasando es que no lo usas correctamente. Intentas hacer una operación ilegal para la función.