@MuffinLover

Как грамотно это сделать? Сравнение файлов?

Фишка в чем: надо сделать программу которая делает диф двух файлов... Если на вход подаются текстовые файлы, то посимвольно, а если бинарные то побайтово..
Если посимвольно, то надо вывести строчку в которой первое несовпадение и вывести плюс между строчками где различие. Выводить нужно в таком формате: пример
abcd
++
attd

И вот предположим есть два файла:
Предположим есть два файла:
1)
```
tttt
tttt
abcd
2)
```
tttt
tttt
attd
```
Надо как раз вывести
abcd
++
attd

Как это грамотно сделать? Вычислять offset когда началось несовпадение(относительно считанного буфера) и выводить начиная с него? или как? Как красиво делали бы вы
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 2
Комментировать
@res2001
Developer, ex-admin
Вычислять offset

Вычислять ничего не нужно. Сравнивайте по символьно, не используя strcmp (или memcmp) и offsetом у вас будет текущий индекс. Кроме того для текстового варианта вам не нужен "глобальный" offset, т.к. вы будете сравнивать построчно. Т.е. offset только внутри данной конкретной строки.
Для бинарного сравнения - все то же самое, но offset будет глобальный, тут уже сиволы CR и LF роли не играют.
Имейте ввиду, что в винде перевод строки это CRLF (0x0D 0x0A), а в никсах LF (0x0A)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы