Which printf's should I use in which circumstances? Like when would be using fprintf(), snprintf(), or any of the non-printf()'s be appropriate and usefull?