Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Исходники vfprintf на С где взять?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Программирование
Сергей Борщ
В комплекте mspgcc оказался весьма и весьма урезанный вариант.
А нужно в сжатые сроки показать заказчику пусть неоптимальный, но хоть как-то рабочий вариант программы.
vfprintf из avr-libc очень хорош, но использует асмовые функции конвертации в строку, портировать их на msp сейчас нет времени, хотя в будущем это вполне возможно.
vfprintf из glibc просто монстрообразен и недоступен для понимания.
Беглый поиск по гугле дает ссылки на glibc или на совсем уж обрезанные варианты.

Интересует компактная реализация на С, вывод десятичных/шестнадцатиричных целых и плавающей точки в обычном (не экспоненциальном) формате. И те и другие с поддержкой ширины поля.
sergeeff
Сережа! Была такая библиотека неплохая : ftp://www.k9wk.com/c.zip. Там есть.
Сергей Борщ
Цитата(sergeeff @ Oct 28 2008, 19:46) *
Была такая библиотека неплохая : ftp://www.k9wk.com/c.zip. Там есть.
Похоже, действительно "была". Не могу зайти туда качалками, а в ручном режиме не пускает анонимусом sad.gif Копии не сохранилось?
?ELF
Пофиксил.
Чтобы PKZIPFIX.EXE искать не пришлось.

---
Нажмите для просмотра прикрепленного файла
Сергей Борщ
Всем большое спасибо! То, что нужно!
Сергей Борщ
Если кто захочет использовать этот исходник, предупреждаю: в нем заложена хорошая грабля.
Не зря умные люди предупреждают, что явное приведение типов - намек на непорядок в коде:
Код
int _printfs(FILE *fp, char *string, const char *format, va_list ap)
//сначала имеем казалось бы, невинное:
  for(p = (char *)format; (*p && c != EOF); p++)
//а потом
            if(*p == 'g')
            {
              *p = 'e';
            } else {
              *p = 'E';
            }
          } else {
            *p = 'f';
Нетрудно понять, что для процов, которые хранят форматную строку во флеше этот код работать не будет, а для тех, которые копируют ее в ОЗУ (как х86) - будет работать только на первом проходе.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.