Ваш вопрос не является полной спецификацией, например ::10000
- what is unused space?
- do the char arrays contain string terminator or not?
- is the file small enough to read into memory, or is it large?
Так что я не могу написать это тебе. Однако вы можете легко запрограммировать его, если будете следовать этим инструкциям:
1. Build a list of pointers to the used 128 bytes blocks.
2. Sort that list.
3. You can now overwrite the file looping through the ordered list of pointers.