sprintf template func