История изменений
Исправление zudwa, (текущая версия) :
обычна длина идет перед полем переменной длины, это позволяет выделять буфер на лету.
ну и можно сразу задать структуру для строк
typedef struct {
uint16_t sz,
uint8_t* str
} t_str;
t_str a = { .sz=5, .str="12345" };
printf("%.*s\n", a.sz, a.str);
а так по хорошему все это нужно упаковывать в какой-то канальный протокол с символами синхронизации, бит/байт стаффингом, crc и тд
для понимания можно посмотреть что-то типа
https://microsin.net/adminstuff/others/xmodem-protocol-overview.html
Исправление zudwa, :
обычна длина идет перед полем переменной длины, это позволяет выделять буфер на лету.
ну и можно сразу задать структуру для строк
typedef struct {
uint16_t sz,
uint8_t* str
} t_str;
t_str a = { .sz=5, .str="12345" }
printf("%.*s\n", a.sz, str.d);
а так по хорошему все это нужно упаковывать в какой-то канальный протокол с символами синхронизации, бит/байт стаффингом, crc и тд
для понимания можно посмотреть что-то типа
https://microsin.net/adminstuff/others/xmodem-protocol-overview.html
Исходная версия zudwa, :
обычна длина идет перед полем переменной длины, это позволяет выделять буфер на лету.
ну и можно сразу задать структуру для строк
typedef struct {
uint16_t sz,
uint8_t* str
} t_str;
t_str a = { .sz=5, .str="12345" }
printf("%.*s\n", a.sz, str.d);
а так по хорошему все это нужно упаковывать в какой-то канальный протокол с символами синхронизации, бит/байт стаффингом, crc и тд
для понимания можно посмотреть что-то типа https://microsin.net/adminstuff/others/xmodem-protocol-overview.html https://ru.wikipedia.org/wiki/Modbus