Помощь - Поиск - Пользователи - Календарь
Полная версия: Файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
CQ
Написать программу сравнения двух файлов: должно печататься первая строка, в которой они различаются. Если файлы идентичны, то выдать сообщение.
trminator
А в чем проблема? Читать по строке из каждого файла вроде несложно, сравнить строки, если ОК, то продолжить, если нет -- сказать об этом
Atos
Что-то типа двух вложенных циклов:
Код

while (not Eof(f1)) or (not Eof(f2)) do {до конца файла}
   while (not Eoln(f1)) or (not Eoln(f2)) do {до конца строки}
   begin
   ...
   end;

В цикле пробегаем элеиенты соответствующей строки обоих файлов, сравнивая их. Если не совпадают, то выходим из цикла.
Да, надо ещё рассмотреть случай, когда строка одного файла больше соотв. строки другого, или когда сам файл больше.
pascal65536
Можно посимвольно сравнивать...
Обычно так сохраняшки от гамеза разного просматриваешь, сравниваешь и редактируешь. Денег себе нарисовать побольше или монстров каких-нибудь.
trminator
Код

program cmp;
var s1, s2 : string;
   f1, f2 : text;
   i      : integer;
begin
   assign(f1, 'c:\temp\file1.txt');
   assign(f2, 'c:\temp\file2.txt');
   reset(f1); reset(f2);
   i := 1; s1 := ''; s2 := '';
   while (not EOF(f1)) and (not EOF(f2)) do
   begin
       readLn(f1, s1); readLn(f2, s2);
       if s1 <> s2 then break else inc(i)
   end;

   if s1 = s2 then writeLn('identical files') // На самом деле они могут быть и пустыми. Как-нить обыграть тот факт, что ничего не считано. Например, если (s1 = '') and (s2 = '')
   else writeLn(i,' th string');

   close(f1); close(f2)
end.

Еще эта программа игнорирует различия типа лишняя пустая строка -- тоже файлы одинаковые. Но требуется-то сравнить строки... Если нужно побайтово, то можно читать BlockRead'ом в массив байт и сравнивать массивы.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.