Zadanie z plików – Diff

Napisać funkcję diff, której zadaniem jest sprawdzenie różnic w dwóch plikach, których nazwy podane są jako parametry funkcji.

  void diff(char plikWe1[], char plikWe2[])

W pierwszej wersji programu powinny zostać wyświetlone linie w plikach, które są w jakiś sposób rożne, z zaznaczeniem, która to jest linia i w którym pliku. Jako różnicę należy potraktować dodatkowe linie (nie występujące w drugim pliku) lub zmiany w konkretniej linii, np.

  Plik 1:                                Plik 2:
  To jest pierwsza linia                 To jest pierwsza linia
  w przykładowym pliku.                  w innym pliku.
  Są też jakieś kolejne.                 Bo przecież są dwa
                                         podane pliki z liniami.
                                         Są też jakieś kolejne.

W wyniku powinno zostać wyświetlone:

  Różnice w plikach:
  p1 l.2: w przykładowym pliku. 
  p2 l.2: w innym pliku.
  Dodatkowe linie:
  p2 l.3: Bo przecież są dwa
  p2 l.4: podane pliki z liniami.

W kolejnych etapach rozbudować funkcję o następujące właściwości:

  1. Wynik porównania poza wyświetlaniem na ekran zapisywać dodatkowo w pliku, którego nazwa jest taka sama, jak nazwa pierwszego pliku, ale posiada przedrostek ‚diff_’.
  2. Wyświetlać informacje o liczbie zmienionych linii (różnic) oraz liczbie dodatkowych linii (nowych) w obydwóch plikach.
  3. Wyświetlać informacje o różnicach w konkretnej linii, dla podanego wyżej przykładu byłoby to:
      Różnice w plikach:
      l.2 / l.2: w ''innym / przykładowym'' pliku.
      p1 l.2: w przykładowym pliku. 
      p2 l.2: w innym pliku.
    

Reszta pozostaje tak samo, jak we wcześniejszej wersji.

Proszę również dodać kolejne, przydatne w praktyce elementy — zgodnie z własną inwencją.

Co to jest diff?

Proszę przeczytać i nie wzorować się na podanym przykładzie, bo jest on nieco inny: Diff