|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.05.2013, 21:12 | #1 |
Регистрация: 04.05.2013
Сообщений: 8
|
Вопрос по работе с файлами
Здравствуйте, уважаемые программисты!
У меня к вам следующий вопрос: Есть 2 файла с записями (нечто вроде БД), и задача этой программы - добавить в первый файл (с указанной позиции pos) указанное число записей num из второго. Программу я написал, а вот результат нулевой - ничего не меняется. В чём ошибка? Код:
Последний раз редактировалось Cstln; 05.05.2013 в 19:14. Причина: исправил ошибку в коде |
04.05.2013, 21:42 | #2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Первое, что обнаружил в Вашей программе - массу ненужных действий.
Вы бы хоть расставили комментарии - что пытаетесь сделать. |
04.05.2013, 22:01 | #3 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Кроме того ...
Код:
Код:
Для открытия файла в режиме записи следует использовать п/п: Код:
Как-то так, ...
|
04.05.2013, 22:35 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
ViktorR, для файла записей reset откроет и на чтение и на запись, насколько помню; а rewrite еще и сотрет содержимое файла.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
04.05.2013, 23:08 | #5 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
|
04.05.2013, 23:25 | #6 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,330
|
Да. С замечанием согласен. Reset() - только чтение, если файл текстовый, а для типизированных можно писать.
Но вот еще одна вещь: Код:
Как-то так, ...
Как-то так, ...
|
05.05.2013, 01:03 | #7 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Это как раз одна из тех многочисленных операций, которые совершенно лишние, т.к. ни на что не влияют. |
|
05.05.2013, 19:12 | #8 |
Регистрация: 04.05.2013
Сообщений: 8
|
Простите, я в программировании не очень силён, но ненужных действий не вижу.
Я думал так: При каждом действии над найлом у него сдвигается позиция на +1. Но чтобы и писать, и читать, приходится делать сдвиги назад. Код:
1) Забираю из f2 запись в перменную t 2) Циклом while устраиваю перебор в f1: "смещаю" записи на 1 элемент при помощи t и t2 т .е. в нужное место вставляется элемент, а все послестоящие записи смещаются на 1 позицию и так повторяется num раз P.S.:я подправил в коде 1 ошибку (поменял местами 2 команды в цикле) |
05.05.2013, 21:31 | #9 | ||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Код:
Я не знаю, что Вы хотите делать, возможно, Вы что-то пропустили, а возможно, написали лишнее, поэтому и прошу прояснить. Цитата:
Воспользуйтесь третьим файлом и алгоритм существенно упростится и, главное, будет работать оптимально по скорости и количеству выполняемых операций. Могу предложить два варианта (оба используют третий файл): 1. Создается новый файл, в который сначала переписывается содержимое первого файла до позиции вставки, затем - содержимое второго файла и, наконец, "хвост" первого файла. При необходимости первый файл уничтожается, а новый - переименовывается. 2. Первый файл позиционируется сразу на нужную позицию, во временный (третий) файл переписывается весь "хвост" первого файла, первый файл вновь позиционируется на ту же нужную позицию, после чего в него дописываются содержимое сначала второго, а потом - третьего файла. Временный файл уничтожается. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос по работе с файлами (Delphi) | BigDa | Общие вопросы Delphi | 6 | 25.04.2012 21:01 |
Задание по работе с файлами (C) | Jersey | Помощь студентам | 1 | 28.12.2011 09:59 |
Вопрос по работе с файлами | Елжан | Помощь студентам | 0 | 01.12.2011 19:23 |
Вопросы по работе с файлами С++ | Alex456 | Общие вопросы C/C++ | 4 | 14.06.2011 22:27 |
Интересный вопрос по работе с файлами в C++ | FastDead | Общие вопросы C/C++ | 8 | 25.12.2009 23:13 |