Например TDA7294

Форум РадиоКот • Просмотр темы - sprint,print в компиляторе XC8
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 09:45:10

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: sprint,print в компиляторе XC8
СообщениеДобавлено: Вс июл 16, 2017 03:23:54 
Первый раз сказал Мяу!

Зарегистрирован: Ср фев 27, 2013 01:30:10
Сообщений: 37
Рейтинг сообщения: 0
Доброго времени суток, подскажите как ограничить размер строки в функциях sprint,print. Вроде должно быть что то вроде snprint, но такой в компиляторе нет.И как ограничить выводную переменную.То есть buf_2=-25365, а вывести мне надо -253 или последние 65.
Код такой использую:
char mass_buf[15]; //массив
int buf_1; // переменная 1
int buf_2; // переменная 2
.......
.......
sprintf(mass_buf,"b_1=%x b_2=%d",buf_1,buf_2);
.......
.......
Если строка больше массива, то "портятся" другие регистры.
Пробовал запись b_1=%2x. Но число выводится полностью.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: sprint,print в компиляторе XC8
СообщениеДобавлено: Вс июл 16, 2017 07:39:56 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
как ограничить выводную переменную.То есть buf_2=-25365, а вывести мне надо -253 или последние 65.
[...]
Пробовал запись b_1=%2x. Но число выводится полностью.

Согласно спецификации 2 здесь гарантированная ширина поля вывода а не максимально доступная. Поэтому и "распирает".

A "oтбить сотые" можно делением:
Код:
printf("%d.%02d", buf_2 / 100, buf_2 % 100);

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: sprint,print в компиляторе XC8
СообщениеДобавлено: Пн июл 17, 2017 16:51:14 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А зачем взваливать всё это на sprintf ? Что мешает просто вывести 4 первых символа в массиве ?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: sprint,print в компиляторе XC8
СообщениеДобавлено: Вт июл 18, 2017 08:26:46 
Первый раз сказал Мяу!

Зарегистрирован: Ср фев 27, 2013 01:30:10
Сообщений: 37
Рейтинг сообщения: 0
Siarzhuk, такой вариант рассматривал.Но он требует математических операций, в принципе при достатке памяти можно и воспользоваться. Как понял что в XC8 sprint,print вводимую строку нельзя ограничить, что бы не "портить" старшие регистры при переполнении массива.
Аlex, ничего не мешает.Цель обучится работе с компилятором XC8.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: sprint,print в компиляторе XC8
СообщениеДобавлено: Вт июл 18, 2017 09:54:59 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
EclipsV, компилятор тут не при чём. sprintf в любом компиляторе не умеет ограничивать строку, а не только в XC.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: sprint,print в компиляторе XC8
СообщениеДобавлено: Вт июл 18, 2017 10:05:50 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
Siarzhuk, такой вариант рассматривал.Но он требует математических операций, в принципе при достатке памяти можно и воспользоваться.

Перефразируя известную пословицу: Связавшись с printf-ом по байтикам не плачут. В XC8 printf конечно уоптимизированый и хитро-встраиваемый, но printf - это printf - загляните в map-файл сколько чего он за собой тащит при использовании его в проекте. :)
Как понял что в XC8 sprint,print вводимую строку нельзя ограничить, что бы не "портить" старшие регистры при переполнении массива.

Практика - критерий истины. © Увы.

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y