Перейти к содержанию
    

Исходники vfprintf на С где взять?

В комплекте mspgcc оказался весьма и весьма урезанный вариант.

А нужно в сжатые сроки показать заказчику пусть неоптимальный, но хоть как-то рабочий вариант программы.

vfprintf из avr-libc очень хорош, но использует асмовые функции конвертации в строку, портировать их на msp сейчас нет времени, хотя в будущем это вполне возможно.

vfprintf из glibc просто монстрообразен и недоступен для понимания.

Беглый поиск по гугле дает ссылки на glibc или на совсем уж обрезанные варианты.

 

Интересует компактная реализация на С, вывод десятичных/шестнадцатиричных целых и плавающей точки в обычном (не экспоненциальном) формате. И те и другие с поддержкой ширины поля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Была такая библиотека неплохая : ftp://www.k9wk.com/c.zip. Там есть.
Похоже, действительно "была". Не могу зайти туда качалками, а в ручном режиме не пускает анонимусом :( Копии не сохранилось?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пофиксил.

Чтобы PKZIPFIX.EXE искать не пришлось.

 

---

c_lib.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если кто захочет использовать этот исходник, предупреждаю: в нем заложена хорошая грабля.

Не зря умные люди предупреждают, что явное приведение типов - намек на непорядок в коде:

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) - будет работать только на первом проходе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...