реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Исходники vfprintf на С где взять?, Компактные и с поддержкой float
Сергей Борщ
сообщение Oct 28 2008, 14:52
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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

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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Oct 28 2008, 16:46
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Сережа! Была такая библиотека неплохая : ftp://www.k9wk.com/c.zip. Там есть.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 28 2008, 17:22
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Idle
сообщение Oct 28 2008, 17:45
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 351
Регистрация: 5-04-05
Пользователь №: 3 874



http://web.archive.org/web/20010405034404/...com/alinfo.html
Прикрепленные файлы
Прикрепленный файл  c.zip ( 134.14 килобайт ) Кол-во скачиваний: 46
 
Go to the top of the page
 
+Quote Post
?ELF
сообщение Oct 28 2008, 18:03
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 8-09-06
Из: Россия, Челябинская область
Пользователь №: 20 187



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

---
Прикрепленный файл  c_lib.zip ( 120.86 килобайт ) Кол-во скачиваний: 184


--------------------
do ut des
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 28 2008, 18:36
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Всем большое спасибо! То, что нужно!


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 2 2008, 23:36
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Если кто захочет использовать этот исходник, предупреждаю: в нем заложена хорошая грабля.
Не зря умные люди предупреждают, что явное приведение типов - намек на непорядок в коде:
Код
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) - будет работать только на первом проходе.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01426 секунд с 7
ELECTRONIX ©2004-2016