Ну, вы всегда можете поместить данные в буфер следующим образом:
void *buffer = malloc(size_of_buffer);
char *ch = buffer;
*pos++ = a;
*pos++ = b;
*(uint64_t*)(pos) = c
Или использовать memcpy, как подсказывает cnicutar.Тем не менее, я думаю, что гораздо проще и с меньшей ошибкой просто записать каждый элемент в файл по одному:
write(fd, &a, sizeof a);
write(fd, &b, sizeof b);
write(fd, &c, sizeof c);
Остерегайтесь проблем с порядком байтов.