Домашнее задание 1.1

Указания:

  • Программа должна получать входные данные (имена файлов и. т. д.) через аргументы командной строки.
  • При необходимости результат должен выводиться в стандартный поток вывода.
  • Работа с файлами должна осуществляться средствами API POSIX.
  • Один байт соответствует типу данных charsigned char или unsigned char в языке программирования C.

Варианты

  1. Скопировать в заданный файл конкатенацию содержимого двух других файлов. Решить задачу с помощью отображения файлов в память.
  2. Определить количество вхождений каждого возможного значения байта (0 - 255) в заданный файл. Вывести информацию только о байтах с ненулевым количеством вхождений. Решить задачу с помощью отображения файлов в память.
  3. Реализовать в заданном файле циклический сдвиг содержимого на заданное количество байт влево/вправо. Решить задачу с помощью отображения файлов в память.
  4. Зашифровать содержимое файла с перезаписью результата в тот же файл. Шифрование должно выполняться при помощи побитовой операции "исключающее или" каждого исходного байта с соответствующим байтом заданного ключа (строки) некоторой длины, повторенного при необходимости нужное количество раз. Полученный файл расшифровывается тем же алгоритмом. Решить задачу с помощью отображения файлов в память.
  5. Найти в заданном файле все вхождения заданной строки. Вывести позиции начала каждого вхождения и содержимое файла, начиная с этой позиции.
  6. Найти в заданном файле последнее вхождение заданной строки. Вывести позиции начала каждого вхождения и содержимое файла, начиная с этой позиции. Решить задачу с помощью отображения файлов в память.
  7. Определить, является ли содержимое заданного файла палиндромом. Решить задачу с помощью отображения файлов в память.
  8. Записать содержимое n заданных файлов в выходной файл, записывая в него сначала первый байт первого файла (если есть), затем первый байт второго, ..., затем n-го, затем второй байт первого файла и т. д.
  9. Записать содержимое двух заданных файлов в выходной файл, записывая в него сначала первый байт первого файла (если есть), затем первый байт второго, затем второй байт первого и т. д. Решить задачу с помощью отображения файлов в память.