Этот вопрос пришел на ум, когда я пытался решить проблему this.
У меня есть жесткий диск емкостью 120 ГБ, из которых 100 ГБ занят одним огромным файлом. Таким образом, 20 ГБ по-прежнему бесплатны.
Мой вопрос в том, как мы можем разделить этот огромный файл на более мелкие, скажем по 1 ГБ каждый? Я вижу, что если бы я имел свободное пространство на 100 ГБ, возможно, это было возможно с помощью простого алгоритма. Но, учитывая только 20 ГБ свободного места, мы можем записать до 20 1GB файлов. Я не знаю, как удалить содержимое из большего файла во время чтения из него.
Любое решение?
Кажется, я должен обрезать файл на 1 ГБ, как только я закончу писать один файл, но это сводится к этому заданию:
Можно ли обрезать часть файла? Как именно?
Я хотел бы увидеть алгоритм (или схему алгоритма), который работает на C или С++ (желательно Standard C и С++), , поэтому я могу узнать подробности нижнего уровня. Я не ищу волшебную функцию, script или команду, которая может выполнять эту работу.