Язык программирования С, лабораторная работа 2.
Файлы.

Задания

  1. Масштабирование изображения.

    Создать утилиту scale, которая производит масштабирование переданного ей изображения в формате ppm P3. Общий вид вызова утилиты:

    scale масштаб sourcefile [destfile]
    Масштаб: действительное число в диапазоне (0;10] - коэффициент масштабирования. При значении <1 изображение уменьшается, при значении >1 - увеличивается.
    sourcefile - имя исходного файла в формате ppm P3.
    destfile - имя результирующего файла в формате ppm P3. Если отсутствует, то результат обработки исходного файла отправляется в стандартный поток вывода.

  2. Подсчет строк, слов и символов.

    Создать аналог утилиты wc (word counter). Обработать опции -c -w -l короткого вида, предусмотреть возможность отсутствия имени обрабатываемого файла в командной строке. Пробельным символом (разделителем слов) считать любой символ, код которого меньше 33.

  3. Охрана файла

    Разработать две программы.

    Первая программа, "Охранник", при запуске формирует бинарный файл secure.dat в текущем каталоге (размер файла передается в командной строке). Каждый байт secure.dat "Охранник" заполняет случайным значением от 1 до 255, последний байт в файле = 0. Затем, раз в N миллисекунд (передается в командной строке), "Охранник" считывает файл и сравнивает его с эталоном, хранящемся в оперативной памяти. Если файл отличается от эталона, "Охранник" выводит на экран 1) сообщение "Обнаружен похититель!", 2) позиции всех байтов с некорректным содержимым и 3) эталон, после чего удаляет файл и завершает работу.

    Вторая программа, "Похититель", при запуске ожидает появления файла "secure.dat" в текущем каталоге и его полного заполнения, после чего пытается с периодичностью в X миллисекунд (передается в командной строке) считать из файла один байт со случайной позиции и заменить его в файле на значение 0. Позиции не должны повторяться. При исчезновении файла secure.dat "Похититель" должен вывести на экран 1) сообщение "Тревога, уходим!" и 2) позиции и значения всех байтов, которые удалось похитить, после чего завершить работу. При успешном чтении всех байтов из файла "Похититель" должен сформировать файл abducted.dat из похищенных байтов и завершить работу. При удачном "похищении" содержимое файла abducted.dat будет полностью соответствовать эталону, сформированному "Охранником".