Передача программе аргументов из командной строки 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Передача программе аргументов из командной строки



Цель работы:

  1. Изучить правила передачи параметров программе при запуске.
  2. Исследовать отличия между длинными и короткими опциями в стандарте POSIX.
  3. Научится использовать механизмы управления запуска программ в своих программных проектах.
  4. Изучить способы организации взаимодействия между программами.
  5. Научиться внедрять в текст программы справочную информацию.

Задания к лабораторной работе

Согласно заданию составить алгоритм и написать программу на языке С ++. Программа компилируется и запускается под управлением ОС Linux. Разработанная программа должна содержать встроенную справочную информации, описывающую правила использования, цель назначения и информацию о разработчике. Аргументы запуска программа должна обрабатывать согласно рекомендациям POSIX.

 

Варианты заданий

1. Написать программу, работающую в текстовом режиме, которая должна выводить на экран содержимое текстового файла, имя которого передается в программу с помощью аргументов командной.

Все строки в файле длиннее 80 символов обрезать до 80 символов. Цвет символов - белый. Вверху экрана выводить имя файла. Цвет фона - черный. При нажатии клавиш Up & Down прокручивать экран по вертикали. При нажатии клавиш Left & Right прокручивать экран по горизонтали, т.е. выводить ранее обрезанные строки.

 

2. Написать программу, работающую в текстовом режиме (ширина экрана равна 80 столбцов), которая должна выводить на экран содержимое бинарного файла, имя которого передается в программу с помощью аргументов командной строки.

Содержимое бинарного файла выводить в шестнадцатеричном виде по 16 байт в строке, между каждыми четырьмя байтами вставляя пробел. Вверху экрана выводить имя файла. В левой части экрана выводить смещение (в шестнадцатеричной форме) 16-байтной строки относительно начала файла. Цвет символов - белый. Цвет фона - черный. При нажатии клавиш Up & Down прокручивать экран по вертикали.

Пример выполнения:

test

00000000 455D103D 56431DFC 66CA41AA 123309BB

00000010 D54D1000 06434D8C 66CA41AA 123309BB

...

 

3. Написать программу, работающую в текстовом режиме (ширина экрана равна 80 столбцов), которая должна выводить на экран содержимое текстового файла, имя которого передается в программу с помощью аргументов командной.

Все строки в файле длиннее 80 символов необходимо переносить по словам на следующую строку экрана. Вверху экрана выводить имя файла. Цвет символов - белый. Цвет фона - черный. При нажатии клавиш Up & Down прокручивать экран по вертикали.

 

4. Написать программу, принимающую в качестве аргумента командной строки имя текстового файла и выводящую содержимое файла в стандартный поток вывода. Если содержимое файла не умещается на одном машинном экране, файл выводится постранично: сначала первая страница, потом вторая и так далее. Каждая последующая страница выводится на экран после нажатия пользователем клавиши Enter.

 

5. Подготовить несколько исполнимых файлов, выводящих на экран различные сообщения. Подготовить текстовый файл, в котором заданы пути к этим исполнимым файлам. Написать программу, читающую из текстового файла имена исполнимых программ и запускающую их в порядке, противоположном тому, в котором они указаны в файле. Имя текстового файла жестко задано в исходном тексте программы.

 

6. Написать программу, принимающую в качестве аргументов командной строки два имени текстового файла и параметр, определяющий режим записи. Программа считывает содержимое первого файла и записывает его во второй файл. Режим записи определяет, будет ли второй файл перезаписан или данные первого файла будут добавляться в конец второго файла.

 

7. Написать программу, читающую информацию со стандартного потока ввода и записывающую ее в файл. Имя файла программа принимает в качестве аргумента командной строки. Чтение со стандартного потока продолжается до тех пор, пока пользователь не нажмет ' Ctrl + Z ' (EOF).

 

8. Написать программу, работающую в текстовом режиме (ширина экрана равна 80 столбцов), которая должна выводить на экран текстовый файл (имя передается через аргументы командной строки). Строки длиннее 80 символов обрезаются. Цвет символов - серый. Цвет фона - черный. Слова, список который определен в массиве:

char *keyWords[] = {

"int",

"float",

...

};

должны выводиться белым цветом. При нажатии клавиш Up, Down прокручивать экран.

 

9. Подготовить несколько исполнимых файлов, выводящих на экран различные сообщения. Подготовить два текстовых файла, содержащих пути к этим исполнимым файлам, порядок следования исполняемых файлов для каждого текстового файла произвольный. Написать программу, принимающую в качестве аргумента командной строки путь к текстовому файлу, читающую из файла имена исполнимых программ и запускающую их в том порядке, в котором они указаны в файле.

 

10. Написать программу, принимающую в качестве аргумента командной строки имя текстового файла и выводящую содержимое файла в стандартный поток ошибок (STDERR) в обратном порядке.

 

11. Написать программу, принимающую в качестве аргумента командной строки имя текстового файла и выводящую содержимое файла построчно в стандартный поток вывода: сначала первая строка, потом вторая и так далее. Каждая последующая строка выводится на экран после нажатия пользователем клавиши Enter.

 

12. Написать программу, принимающую в качестве первого аргумента командной строки имя текстового файла, в качестве второго и третьего аргумента - любые слова. Программа должна выводить содержимое файла в стандартный поток вывода, заменяя все вхождения в файле слова, заданного вторым аргументом, словом, заданным третьим аргументом.

 

13. Написать программу, принимающую в качестве аргумента командной строки имя файла. Если этот файл имеет расширение. txt, программа должна вывести его содержимое в стандартный поток вывода. Если это исполняемый файл, программа должна запустить его на выполнение (Необходимо подготовить исполнимый файл, выводящих на экран какое-нибудь сообщение). Если этот файл имеет какое-то другое расширение, программа должна вывести соответствующее сообщение и завершиться.

 

14. Написать программу, работающую в текстовом режиме (ширина экрана равна 80 столбцов), которая должна выводить на экран содержимое двух бинарных файлов, имена которых передаются в программу с помощью аргументов командной строки.

Содержимое бинарных файлов выводить в шестнадцатеричном виде по 16 байт в строке, между каждыми четырьмя байтами вставляя пробел. В левой части экрана выводить смещение (в шестнадцатеричной форме) 16-байтной строки относительно начала файла. Файлы отделять вертикальной чертой. Вверху экрана выводить имена файлов. Различающиеся байты файлов отображать красным цветом. Цвет остальных символов - белый. Цвет фона - черный. При нажатии клавиш Up & Down прокручивать экран по вертикали.

Пример выполнения:

test.exe bc.exe

00000000 455D103D 56431DFC 66CA41AA 123309BB | 4D000000 00101000 60CA1111 1131111B

00000010 D54D1000 06434D8C 66CA41AA 123309BB | D54D1000 06434D8C 66CA41AA 123309BB

...

 

15. Написать программу, работающую в текстовом режиме (ширина экрана равна 80 столбцов), которая должна выводить на экран список файлов и каталогов в текущей директории (в которой запущена программа). Если весь список не умещается на одном экране, то при нажатии клавиш Up, Down прокручивать список.

 

16. Написать программу, принимающую в качестве аргументов командной строки четыре имени текстовых файлов. Программа считывает содержимое первого файла и записывает: во второй файл - гласные латинские символы, встречающиеся в первом файле, в третий файл - согласные латинские символы, встречающиеся в первом файле, в четвертый файл - остальные символы, встречающиеся в первом файле.

 

17. Написать программу, принимающую в качестве аргумента командной строки имя текстового файла. Программа считывает содержимое переменных окружения системы и записывает их в файл, имя которого принимает в качестве параметра.

 

18. Написать программу, выполняющую перемещение файла, начальное и конечное имена файлов передаются в программу через аргументы командной строки.

 

19. Написать программу, принимающую в качестве аргументов командной строки два имени текстовых файлов. Программа считывает содержимое первого файла, преобразует символы латиницы нижнего регистра в символы латиницы верхнего регистра, а символы латиницы верхнего регистра в символы латиницы нижнего регистра, и записывает его во второй файл.

 

20 Для текстового файла, имя которого передается через командную строку, подсчитать количество: 1) символов; 2) символов без пробелов; 3) букв; 4) слов; 5) предложений, и вывести сформированную статистику на экран.

 

21 Считать текстовый файл, имя которого передано через командную строку, произвести преобразование текста, написанного латиницей, к верхнему регистру. Результат работы сохраняется в обрабатываемом файле. Например: begin -> BEGIN.

 

22 Подготовить исполнимый файл (1), принимающий из командной строки один параметр (имя файла) и выводящий содержимое файла на экран. Подготовить исполнимый файл (2), принимающий из командной строки два параметра: имя исполнимого файла, который он запускает, и строковый параметр, который он передает запускаемому файлу через командную строку. Осуществить запуск исполнимого файла (2) в связке с исполнимым файлом (1).

 

23 Программа принимает через командную строку: 1) имя текстового файла; 2) произвольную строку символов (ключ). Программа должна вывести на экран только те строки файла, в которых содержится строка символов (ключ), переданная через командную строку вторым аргументом. При выводе на экран строки файла, выделять вхождение ключа другим цветом.

 

24 Написать программу, которая разбивает большой файл на ряд файлов меньшего размера и собирает ряд файлов в один. При разбивке имя разбиваемого файла и размер конечного файла передавать через командную строку. При сборке имя первого собираемого файла передавать через командную строку, остальные файлы искать в текущей директории, увеличивая номер в расширении файла.

У разбиваемого файла менять имя и расширение:

filename. ext -> filename _ ext. pXX, где XX - это номер части (от 00 до 99). При сборке производить обратную операцию.

Пример:

файл a. out размер 5 456 223 байт

конечные файлы:

a _ out. p 01 размер 2 000 000 байт

a _ out. p 0 2 размер 2 000 000 байт

a _ out. p 03 размер 1 456 223 байт

 

Пример работы программы:

разбиение:

c:\>file_sc -s BigFile 2000000

 

сборка:

c:\>file_sc -с BigFile.p01

 

25 Написать программу, которая составляет список файлов в текущей директории, сортирует файлы в списке по расширению (в алфавитном порядке) и записывает этот отсортированный список в текстовый файл.

 

26 Написать программу, принимающую в качестве аргументов командной строки два имени текстовых файлов. Программа считывает содержимое первого файла, подсчитывает число вхождений каждой буквы, и записывает результат во второй файл.

 

27 Подготовить несколько текстовых файлов с сообщениями. Подготовить специальный текстовый файл, в котором заданы пути к текстовым файлам с сообщениями. Написать программу, принимающую в качестве аргумента командной строки путь к текстовому файлу, читающую из файла имена текстовых файлов с сообщениями и выводящую текстовые файлы с сообщениями на экран.

 

28. Написать программу, принимающую в качестве аргументов командной строки имя текстового файла и параметр, определяющий режим вывода содержимого файла на экран. Программа выводит содержимое файла на экран в зависимости от режима вывода либо в обычном символьном виде, либо в шестнадцатеричном формате (по два знакоместа на символ под старшие и младшие 4 бита). При выводе в шестнадцатеричном формате коды соседних символов разделять пробелами.

 

Рекомендаци и по организации кода программы

 

1. Старайтесь осмысленно использовать директиву using, определяя при помощи неё использование нужных средств стандартной библиотеки. Например, целесообразно использовать

 

using std::cout;

using std::cin;

using std::endl;

using std::string;

 

вместо использования всего пространства имен стандартной библиотеки:

 

using namespace std;

 

Целесообразно использовать пространство имен для разделения области различных частей проекта, содержащего объявления нескольких классов. Пространство имен позволяет исключить конфликт имен для классов и методов с одинаковыми именами, определенными в различных частях проекта.

 

2. Каждый блок кода программы должен быть сопровожден соответствующими комментариями. Комментарии к программе должны быть составлены на русском языке. Старайтесь делать код программы читаемым, давать переменным и методам осмысленные имена.

 

3. При использовании объектно-ориентированного подхода к проектированию программ целесообразна многофайловая организация проекта. При этом в состав проекта будут входить главный модуль main.cpp и файлы статических библиотек, включающие в себя заголовочные файлы библиотек и соответствующе им файлы реализации.

4. Имена создаваемых программных модулей, равно как и имена программных переменных, должны нести смысловую нагрузку об их назначении. Можно использовать стандартные сокращения, абревиатуры и их комбинации. Например, имя программной утилиты su, входящей в состав командной оболочки bash, является сокращением от английского «substitute user» - «замена пользователя», что отражает факт создания локализованной сессии выполнения команд от имени другого пользователя.

 



Поделиться:


Последнее изменение этой страницы: 2021-06-14; просмотров: 210; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.2.184 (0.026 с.)