сохранение оставшегося символа * и предварительное добавление его к исходному символу * для обработки - PullRequest
0 голосов
/ 04 августа 2020

Я читаю из двоичного файла.

char bigbuf[5000];
    while (read(fd, bigbuf, 2) != 0) {
        uint16_t packetSize = htons(*(uint16_t *)bigbuf);
        read(fd, bigbuf + 2, packetSize - 2);   
        myParser.onUDPPacket(bigbuf, packetSize);
}

Пакеты записываются в двоичный файл размером 40 байт, но внутри функции onUDPPacket я получаю пакет размером 61 байт, затем при втором вызове я снова получить 60-байтовый пакет. Теперь мне нужно написать функцию onUDPPacket таким образом, чтобы при первом вызове она обрабатывала 40 байт данных из 61 полученного байта и добавляла оставшийся 21 байт в начале следующих 60 байт пакета. Как мне это добавить?

void Parser::onUDPPacket(const char *buf, size_t len)
{
}
...