LINUX.ORG.RU

История изменений

Исправление 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

https://ru.wikipedia.org/wiki/Modbus

Исправление 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

Исходная версия 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