Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение/запись в один и тот же файл 
V
    Опции темы
tonhead
  Дата 9.5.2010, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



Всем здравствуйте.

Передо мной стоит задача: считывать данные из текстового файла блоками (тип данных float), обрабатывать блок, записывать блок обратно в тот же файл (на место откуда он был считан), переходить к следующему блоку. К примеру, если в файле 100 чисел, размер блока 50, то я читаю первые 50 чисел, обсчитываю их, и записываю обратно в тот же файл в позиции 0-49; затем читаю числа начиная с 50го, обсчитываю их, записываю в тот же файл в позиции 50-99.

Как это можно осуществить? Пока для чтения я использую код:

Код

float f;
FILE * pFile;
pFile = fopen (fileName.c_str(),"r");
fscanf (pFile, "%f", &f);


Существует ли возможность осуществлять движение по файлу (от одного числа float к другому)? Какие вообще рекоммендации можете дать?
PM MAIL   Вверх
djamshud
Дата 9.5.2010, 16:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Чтение и запись - r+, a+ (параметры fopen).
Движение по файлу (побайтово!) - fseek.
Читать, писать - fread, fwrite.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
tonhead
Дата 11.5.2010, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



А существует возможность вставить данные внутри файла, без замены текста?
Например, выполнение

Код

 fputs ( "This is an apple." , pFile );
 fseek ( pFile , 9 , SEEK_SET );
 fputs ( " sam" , pFile );


привело бы к "This is an  samapple." а не "This is a sample." (как в примере с сайта сплюсплюс.ком).

Потому что в моем случае скорее всего неизвестно будет, сколько байт будет занимать блок, и проще было бы запомнить положение указателя в начале блока, положение указателя в конце блока, потом как то удалить его (блок) - тоже вопрос как это сделать - , и уже затем вставить новый кусок в положение указателя в начале блока.
PM MAIL   Вверх
djamshud
Дата 11.5.2010, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



tonhead, вручную придется делать. Вот тут мы немного флеймили на около-эту тему.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
tonhead
Дата 12.5.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



Задачка упростилась, теперь читаем бинарный файл, тип double = 8 байт. Т.о. ничего удалять не надо, новые данные встанут на место старых хорошо. Научиться только с указателями работать.

Спасибо за ответы.

И спасибо рекламе от Гугл  smile 

Это сообщение отредактировал(а) tonhead - 12.5.2010, 16:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0405 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.