| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Чтение/запись в один и тот же файл |
| Автор: tonhead 9.5.2010, 16:30 | ||
| Всем здравствуйте. Передо мной стоит задача: считывать данные из текстового файла блоками (тип данных float), обрабатывать блок, записывать блок обратно в тот же файл (на место откуда он был считан), переходить к следующему блоку. К примеру, если в файле 100 чисел, размер блока 50, то я читаю первые 50 чисел, обсчитываю их, и записываю обратно в тот же файл в позиции 0-49; затем читаю числа начиная с 50го, обсчитываю их, записываю в тот же файл в позиции 50-99. Как это можно осуществить? Пока для чтения я использую код:
Существует ли возможность осуществлять движение по файлу (от одного числа float к другому)? Какие вообще рекоммендации можете дать? |
| Автор: djamshud 9.5.2010, 16:48 |
| Чтение и запись - r+, a+ (параметры fopen). Движение по файлу (побайтово!) - fseek. Читать, писать - fread, fwrite. |
| Автор: tonhead 11.5.2010, 16:48 | ||
| А существует возможность вставить данные внутри файла, без замены текста? Например, выполнение
привело бы к "This is an samapple." а не "This is a sample." (как в примере с сайта сплюсплюс.ком). Потому что в моем случае скорее всего неизвестно будет, сколько байт будет занимать блок, и проще было бы запомнить положение указателя в начале блока, положение указателя в конце блока, потом как то удалить его (блок) - тоже вопрос как это сделать - , и уже затем вставить новый кусок в положение указателя в начале блока. |
| Автор: djamshud 11.5.2010, 17:15 |
| tonhead, вручную придется делать. Вот http://forum.vingrad.ru/topic-297489.html мы немного флеймили на около-эту тему. |
| Автор: tonhead 12.5.2010, 16:18 |
| Задачка упростилась, теперь читаем бинарный файл, тип double = 8 байт. Т.о. ничего удалять не надо, новые данные встанут на место старых хорошо. Научиться только с указателями работать. Спасибо за ответы. И спасибо рекламе от Гугл |