Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Двойной sprintf
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
-=Женек=-
Господа, есть библиотечка для LCD в ней функция вывода на экран:

Код
void lcd_str_ram(ui16 var, u08 font,ui16 color)
{
  sprintf(buffer ,"%-u",var);
  ram_to_lcd(buffer,font,color);
}



Есть число unsigned int. Как мне заставить выводить эту функцию число в HEX формате не меняя саму функцию?
Палыч
Цитата(-=Женек=- @ Apr 30 2010, 15:52) *
Есть число unsigned int. Как мне заставить выводить эту функцию число в HEX формате не меняя саму функцию?
Не понятно - какую функцию нельзя менять? Функцию lcd_str_ram ? Как же Вы хотите заставить её выводить по-другому? Для вывода в шестнадцатиричном виде нужно заменить "буковку" в формате: sprintf(buffer ,"%-x",var);
-=Женек=-
В принципе я решил проблему - написал другую функцию такую же скопировал и обозвал ее lcd_str_ram_hex, в ней заменил на X и все ОК.
ОДин минус - как заставить ее выводить незначащие нули?

Все, догадался сам, проблема решена.
Сергей Борщ
Цитата(-=Женек=- @ Apr 30 2010, 15:33) *
ОДин минус - как заставить ее выводить незначащие нули?
Замените в ней X на 0X
zltigo
Цитата(-=Женек=- @ Apr 30 2010, 15:35) *
Все, догадался сам, проблема решена.

На следующий раз постарайтесь, пожалуйста, "догадаться" прочитать первый попавшийся букварь по языку и/или стандартным библиотекам. Хотя лучше читайте сразу, тогда узнаете,
что плодить уродские функции обертки на sprintf() просто не надо, поскольку есть много более прямые ну хотя-бы, например, vsprintf().
Код
void bla_bla_printf( char *arg_list, ...)
{
va_list arg_buffer;

    va_start( arg_buffer, arg_list );
    vsprintf( buffer, arg_list, arg_buffer );
........
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.