Здравствуйте,
пишу программу на си.
Хочу по uart передать следующую последовательность байтов:
"0x1F 0x10 0x00 0x01 0x00 0x01" .
Т.к. типа byte в си нет, использую char.
Программа выглядит примерно следующим образом:
char str[6]= {31, 16, 0, 1, 0, 1 };
printf("%s
", str);
Проблема в том что эту последовательность я вывожу на терминал
последовательного порта и он выводит только 0x1F 0x10, потому что
'0' является символом конца строки, поэтому он думает что строка заканчивается и обрезает остальную часть.
Подскажите пожалуйста можно ли вывести на терминал всю строку с нулем вместе, т.е. чтобы ноль не являлся концом строки ?
Использую терминал termite.
Спасибо всем за ответы.
Проблема решена с использованием не массива символов типа
char а массива с типом uint8_t (аналог byte в си), которая
находиться в библиотеке stdint.h . Код программы:
#include
uint8_t str[6] = {0x1F, 0x10, 0x00, 0x01, 0x00, 0x01};
fwrite(str,sizeof(str),1,stdout);
Спасибо большое, gbg, за помощь.
Ответ
Первое. Тип байтов в C есть и называется uint8_t. Живет в stdint.h
Второе. Используйте fwrite(str,sizeof(str),1,stdout);
Комментариев нет:
Отправить комментарий