@Dany_ occhio che sprintf di per sé può portare a buffer overflow. Il codice sopraesposto non controlla che le var* entrino in buf. Usa snprintf per maggiore sicurezza:
e controlla che abbia successo. man sprintf(3)codice:snprintf(buff, sizeof(buf), format, ...);