
Анализ командной строки
Для анализа аргументов командной строки вызова программы BOUND следует предусмотреть 3 прикладные функции: gramma, usage и convert. Обращение к ним должно быть специфицировано в начале исходного кода основной функции main программы BOUND.
Прикладная функция gramma должна обеспечивать грамматический разбор аргументов командной строки вызова программы BOUND. Ее следует передать число аргументов и адрес вектора аргументов вызова программы BOUND, а также указатель на структуру FORMBUF. Основу ее исходного кода должен составлять цикл поиска ключевых параметров вектора аргументов, которые идентифицируют следующий аргумент как имя файла исходного текста, имя файла результирующего типографического текста или требуемый размер строк его абзацев.
Для сравнения аргументов вектора с ключами необходимо применить библиотечную функцию strcmp. Обнаруженные имена исходного и результирующего файлов нужно скопировать, соответственно, в поля inbuf и outbuf структуры FORMBUF. Копию аргумента, который определяет размер строк результирующего типографического текста, следует сохранить в поле workbuf структуры FORMBUF. Копирование указанных аргументов должен обеспечить вызов библиотечной функции strcpy. При этом буферные поля структуры FORMBUF должны быть предварительно инициализированы нулевым кодом.
Результат грамматического разбора аргументов командной строки вызова программы BOUND определяет величина логического произведения (&) кодов начальных символов трех буферных полей структуры FORMBUF. Прикладная функция gramma должна передавать значение этого произведения в основную функцию main через целочисленный код возврата. Нулевой код возврата означает отсутствие хотя бы одного из ключевых или информативных параметров в командной строке вызова программы BOUND.
При нулевом коде возврата прикладной функции gramma из основной функции main должна вызываться прикладная функция usage. Она должна отображать через поток протокола стандартной диагностики (stderr) информационное сообщение, содержащее описание корректного формата командной строки вызова программы BOUND. Для отображения указанной диагностики должна применяться библиотечная функция fprintf. Прикладная функция usage всегда должна завершаться возвратом отрицательного числа, которое через оператор return основной функции main передается в операционную среду вызова программы BOUND, обозначая аварийное завершение ее выполнения.
Любой ненулевой код возврата прикладной функции gramma означает успех грамматического разбора аргументов командной строки вызова программы BOUND. При этом вызов диагностической функции usage не происходит и выполнение программы BOUND должно быть продолжено вызовом прикладной функции convert, которой необходимо передать указатель на структуру FORMBUF.
Прикладная функция convert вызывается для преобразования символического представления требуемого размера строк результирующего типографического текста, которое было сохранено в поле workbuf структуры FORMBUF функцией gramma, в целочисленный формат поля limit. Для выполнения указанного преобразования можно применить библиотечные функции atoi или sscanf. Его результат нужно сохранить в поле limit структуры FORMBUF и вернуть в основную функцию main. Если полученное значение отрицательно, равно 0 или меньше некоторой разумной величины, например, 32, то дальнейшее выполнение программы BOUND должно быть аварийно завершено с вызовом диагностической функции usage в основной функции main.