Использование al oop упростит процесс. Например:
#include <stdint.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
uint8_t buffer[52], chunkSize, data[3060];
uint16_t processed = 0;
while(processed < sizeof(data))
{
if((processed + sizeof(buffer)) < sizeof(data))
chunkSize = sizeof(buffer);
else
chunkSize = sizeof(data) - processed;
printf("%u, ", chunkSize);
memcpy(buffer, data + processed, chunkSize);
processed += chunkSize;
}
printf("\n");
return 0;
}
Это приводит к следующему:
$ gcc main.c -o main.exe; ./main.exe
52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 44,
Обратите внимание, что последний блок составляет 44 байта.
То, что вы делаете с буфером, зависит от вас.