Lista 11 (10 stycznia 2006): 12 punktów.

Argumenty wywołania programu i operacje na plikach.

  1. (5 punktów) Napisz program, który przekopiuje zawartość jednego pliku do drugiego. Nazwy plików mają być podawane jako argumenty wywołania programu. Jeżeli plik docelowy już istnieje, program powinien się zapytać użytkownika, czy chce zastąpić plik, dołączyć pierwszy do drugiego, zmienić nazwę drugiego, czy też zrezygnować.
    Uwaga: Pamiętaj, że w pierwszym pliku mogą się znaleźć dowolne znaki ASCII.
    Wskazówka: Sprawdź, czy program wywołano z prawidłową liczbą argumentów, oraz czy podane nazwy są poprawnymi nazwami plików i czy pierwszy z nich istnieje w lokalnym systemie.
  2. (5 punktów) Napisz program, który porówna ze sobą zawartości dwóch plików. Nazwy plików mają być podawane jako argumenty wywołania programu. Po napotkaniu pierwszej różnicy program powinien wypisać numer wiersza i numer pozycji w wierszu, w którym występuje różnica, po czym przerwać dalsze porównywanie.
    Uwaga: Pamiętaj, że w plikach mogą się znaleźć dowolne znaki ASCII.
    Wskazówka: Sprawdź, czy program wywołano z prawidłową liczbą argumentów, oraz czy podane nazwy są nazwami istniejących plików w lokalnym systemie.
  3. (7 punktów) Napisz program, który (de)szyfruje podany w linii poleceń plik. Kluczem powinno być jedno słowo podawane jako drugi argument wywołania programu. Szyfrowanie powinno cyklicznie "przykładać" klucz do pliku i odpowiednio modyfikować jego zawartość. Na parach kolejnych znaków pliku i klucza wykonuj operację XOR (^); kiedy zabraknie liter klucza, należy zacząć ponownie od jego początku. Metodę szyfrowania tekstu zadanym kluczem zaprogramuj koniecznie jako oddzielną funkcję (zadeklarowaną w pliku nagłówkowym).
    Wskazówka: Sprawdź, czy program wywołano z prawidłową liczbą argumentów, oraz czy podana nazwa pliku jest nazwą istniejącego pliku w lokalnym systemie.
  4. (7 punktów) Napisz program, który przeszuka podany w linii poleceń plik w poszukiwaniu zadanego słowa. Słowo to ma być podawane jako drugi argument wywołania programu. Program powinien wypisać wszystkie wiersze zawierające zadane słowo. Algorytm wyszukiwania słowa w tekście zaprogramuj koniecznie jako oddzielną funkcję (zadeklarowaną w pliku nagłówkowym).
    Wskazówka: Sprawdź, czy program wywołano z prawidłową liczbą argumentów, oraz czy podana nazwa pliku jest nazwą istniejącego pliku w lokalnym systemie.