ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
1080747 Топик полностью
BlackMorda, мудак (26.02.2021 13:20, просмотров: 474) ответил Tpoeшник на Формирую строку для работы ПО контроллером. ПО чужое, мой только маленький кусочек.
Разницу видно сразу 

Во втором примере

"66" - это ASCIIZ строка из 3 символов. Ноль в конце, это признак конца строки, который

sprintf() успешно подставляет в %s.


В первом примере:

А sprintf ( tmp, "%d", DEEP) может дать на выходе непредвиденный результат.

Например число 100000, не будет иметь нолик в конце. Второй sprintf() будет "тянуть" строку в выходной юуфер до появления нуля.

Даже если DEEP имеет формат short, то значение "-32767" займет весь буфер и места для нуля не будет.

Рекомендую:

1) Буфер увеличить;

2) Вместо цепочки присвоений использовать memset()/