Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с фалами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
saur
Стоит задача считать f1 - c:\temp\f1.txt
Затем считать f2 - c:\temp\f2.txt
И все это записать в f3 - c:\temp\f3.txt

Вот что накодил.
program laba;

var f1, f2, f3:text;

a:integer;

begin

assign(f1, 'c:\temp\f1.txt');

reset(f1);

assign(f2, 'c:\temp\f2.txt');

reset (f2);

assign (f3, 'c:\temp\f3.txt');

rewrite(f3);

while not eof(f1) do

begin

read (f1,a);

write (f3, a);

end;

append(f3);

while not eof(f2) do

begin

read(f2,a);

write(f3,a);

end;



write('complete');

close(f1);

close(f2);

close(f3);

end.


Все ли сделано верно?
Client
по идее перед append надо close(f3) сделать. Но тут append и не нужен, пишешь подряд и пишешь...
volvo
Цитата
по идее перед append надо close(f3) сделать.
Не надо:
Цитата(Pascal Help)
Append (procedure)
Opens an existing file for appending.
<...>
Append opens the existing external file with the name assigned to F. An error occurs if no external file of the given name exists. If F is already open, it is closed, then reopened. The current file position is set to the end of the file.
saur
А так все верно? Просто я писал по памяти. Компилятора нет под рукой, я с телефона сижу, поэтому и попросил проверить.
Lapp
Цитата(saur @ 26.05.2010 22:53) *
А так все верно?
Нет.
Про чтение: поскольку файл текстовый, то сказать этого нельзя. Может быть и верно, и неверно - все зависит от формата входных файлов.
Про запись: заведомо неверно. Ты лепишь числа одно к другому без разделителей - как потом этот файл читать?

А append лучше действительно убрать..

P.S.
и что это за новая мода - писать код через строку и без форматирования?..
saur
Цитата(Lapp @ 27.05.2010 0:13) *

Нет.
Про чтение: поскольку файл текстовый, то сказать этого нельзя. Может быть и верно, и неверно - все зависит от формата входных файлов.

Только числа на входе в файле через пробел
Цитата(Lapp @ 27.05.2010 0:13) *

Про запись: заведомо неверно. Ты лепишь числа одно к другому без разделителей - как потом этот файл читать?

Т.е. писать лучше так:
read(f2,a);
write(f3,a);
write(f3, ' ');


Да?
Цитата(Lapp @ 27.05.2010 0:13) *

А append лучше действительно убрать..

Он и так будет писать в конец файла?
Цитата(Lapp @ 27.05.2010 0:13) *

P.S.
и что это за новая мода - писать код через строку и без форматирования?..

Это называется пишу через оперу мини. Тут не очень удобно пробелами выравнивать код
Lapp
Цитата(saur @ 27.05.2010 1:27) *
Только числа на входе в файле через пробел

Тогда вроде верно..
Цитата
Т.е. писать лучше так:
read(f2,a);
write(f3,a);
write(f3, ' ');

Да?
Так:
read(f2,a);
write(f3,a,' ');

Цитата
Он и так будет писать в конец файла?
А откуда ему вообще знать, что у тебя один файл закончился и начался второй? и какое ему до этого дело? ))
Процесс записи идет сам по себе, как шел, если ты не сделал reset на f3.
saur
Может кто нибудь откомпилировать и проверить корректность? Мало ли чего. Заранее благодарен за помощь.
Ozzя
Цитата
Может кто нибудь откомпилировать и проверить корректность?

Программу и файлы приложи, проверю.
saur
f1.txt
Код
1 2 3 4 5


f2.txt
Код
6 7 8 9


f3.txt пуст.

После работы программы должно записаться в f3.txt
Код
1 2 3 4 5 6 7 8 9
Ozzя
Ответ получился:
Цитата
123456789

Если числа должны идти через пробел в f3.txt. то измени
write (f3, a);
на
write (f3, a,' ');
saur
Благодарю всех за помощь. Тему можно закрыть.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.