title: what's the difference between the printf and vprintf function families, and when should I use one over the other?
body: <p>I understand that the difference between the <code>printf</code>, <code>fprintf</code>, <code>sprintf</code> etc functions and the <code>vprintf</code>, <code>vfprintf</code>, <code>vsprintf</code> etc functions has to do with how they deal with the function arguments. But how specifically? Is there really any reason to use one over the other? Should I just always use <code>printf</code> as that is a more common thing to see in C, or is there a legitimate reason to pick <code>vprintf</code> instead?</p>