Доброго времени суток, подскажите как ограничить размер строки в функциях 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. Но число выводится полностью.
[uquote="EclipsV",url="/forum/viewtopic.php?p=3145816#p3145816"]как ограничить выводную переменную.То есть buf_2=-25365, а вывести мне надо -253 или последние 65.
[...]
Пробовал запись b_1=%2x. Но число выводится полностью.[/uquote]
Согласно спецификации 2 здесь гарантированная ширина поля вывода а не максимально доступная. Поэтому и "распирает".
Siarzhuk, такой вариант рассматривал.Но он требует математических операций, в принципе при достатке памяти можно и воспользоваться. Как понял что в XC8 sprint,print вводимую строку нельзя ограничить, что бы не "портить" старшие регистры при переполнении массива.
Аlex, ничего не мешает.Цель обучится работе с компилятором XC8.