Периодически по тексту появляются египетские иероглифы после команд sprintf и scanf - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет знатокам, есть фрагмент кода на борланд Си, перекидываю его сейчас его в asm, управление внешним девайсом, приходится перерабатывать потому что потерян список команд девайса, а исходника программы нет, (выбираются команды по ходу текста). управление осуществляется с помощью команд передаваемых по COM интерфейсу. периодически по тексту появляются египетские иероглифы после команд sprintf и scanf, просмотрел описание вроде примеры есть но не все понятно, может кто-нибудь поможет разобраться с этим форматированным входом/выходом) или просто перевести эти записи из некрономикона). для примера есть следующие записи
int x_Lo,x_Hi,y_Lo,y_Hi,x,y
 
sprintf(wb,"4202%02X%02X%02X%02X06\r",x_Lo,x_Hi,y_Lo,y_Hi); //15 ;количество символов
 
sprintf(wb,"4E02%02X%02X%02X%02X06\r",x_Lo,x_Hi,y_Lo,y_Hi); //15
 
sprintf(wb,"5302%02X%02X04\r",x,y);12
ну взять попроще! третье выражение. по моим предположениям в wb должно быть - 5302 далее не совсем понятно, идет модификатор вывода %02X - двойное шестнадцатеричное поле с добивкой нулями, но тип int подразумевает WORD, то есть 4 цифры. Вопрос срежутся 2 цифры? младшие? старшие? далее тоже самое %02X, и в конце я предполагаю должно быть 04\r, всего должно быть 12 символов. по моему предположению должно быть что то типа 5302XXYY04\r не знаю прав ли я. если не трудно помогите, ну или хотя бы просто переведите команды. Заранее благодарен Алексей.

Решение задачи: «Периодически по тексту появляются египетские иероглифы после команд sprintf и scanf»

textual
Листинг программы
#include <stdio.h>
 
int main (void)
{
  int x_Lo, x_Hi, y_Lo, y_Hi;
 
  /* ВНИМАНИЕ! Использую \n вместо \r, т.к. печатаю на экран */
 
  x_Lo = 0x11;
  x_Hi = 0x22;
  y_Lo = 0x33;
  y_Hi = 0x44;
  printf ("4202%02X%02X%02X%02X06\n", x_Lo, x_Hi, y_Lo, y_Hi);
  x_Lo = 0x11111111;
  x_Hi = 0x22222222;
  y_Lo = 0x33333333;
  y_Hi = 0x44444444;
  printf ("4202%02X%02X%02X%02X06\n", x_Lo, x_Hi, y_Lo, y_Hi);
 
  return 0;
}

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки ввода-вывода
  2. Объявление переменных: x_Lo, x_Hi, y_Lo, y_Hi типа int
  3. Инициализация переменных x_Lo, x_Hi, y_Lo, y_Hi значением 0x11, 0x22, 0x33, 0x44 соответственно
  4. Использование функции printf для вывода на экран строки 4202%02X%02X%02X%02X06, заменяя %02X на значение переменной, начиная с x_Lo
  5. Инициализация переменных x_Lo, x_Hi, y_Lo, y_Hi значением 0x11111111, 0x22222222, 0x33333333, 0x44444444 соответственно
  6. Повторное использование функции printf для вывода на экран той же строки, заменяя %02X на значение переменной, начиная с x_Lo
  7. Возврат значения 0, указывающего на успешный конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы