Предполагая, что вы читаете это на том же типе машины, на котором он был написан (то есть оба с прямым порядком байтов или оба с прямым порядком байтов), я, вероятно, напишу код примерно так:
uint32_t skip;
while (fread(&skip, sizeof(skip), 1, infile)) {
fseek(infile, skip, SEEK_CUR);
putchar(fgetc(infile));
}
Если вам нужно решить проблемы с порядком байтов, я бы, вероятно, использовал htonl
для данных перед записью и ntohl
для них после чтения. Однако есть много альтернатив - XDR и ASN.1 (чтобы назвать только пару) были предназначены для таких работ (хотя, я должен добавить, что оба из них почти наверняка излишни для задача под рукой).