заменить ptr++ на -- и наоборот, а в функцию передавать не начало буфера, а конец... полезно также передавать макс.ширину, и добивать остаток буфера пробелами - для гашения незначащих нулей... можно еще задавать положение точки - для отображения чисел с фикс.точкой...