Веб программирование

Аргументы командной строки [C++]

 
 

Хотелось бы сейчас рассказать вам об аргументах командной строки и их использовании в языке С++. Бьюсь об заклад, все, кто хоть раз пробовали Linux, замечали, что все программы там запускаются по типу

sudo rm -r -f /

В сим случае r и f являются ключами запуска, аргументами, что передаются функции main() нашей программы. Ключи запуска позволяют пользователю выбрать то, как программа будет работать. Для примера рассмотрим тот же линуксовский rm. Сие есть программа, которая удаляет файлы.

rm file удалит файл, что зовется file, однако если мы попробуем указать rm dir, где dir - директория, rm выбьет исключение, гласящее, что мы пытаемся тереть директорию как файл. Однако стоит указать нам ключ -r, как rm сразу же пройдется по директории dir рекурсивно, вытерев файлы из нее, а затем удалит и саму директорию.

В общем примерно так аргументы и работают. Для теста нашей программы на Windows/Linux/чем-угодно нам потребуется командная строка. В каждой ОС она есть, а посему запустим ее заранее. Напишем простую программку, которая выведет нам список всех заданных ей аргументов. Код:

#include <stdio.h>

int main(int argc, char *argv[]){
	for(int i = 0; argv[i] != NULL; i++)
		printf("Arg %i contains %sn", i, argv[i]);
}

Вот и вся программа. В своих прошлых статьях я не использовал такой стиль написания кода, однако спустя некоторое количество времени мне хотелось бы его поменять, точно так же как и поменять стиль повествования, однако не суть.

Функцию printf я тоже не описывал, надеюсь, что вы с ней знакомы. Дам референцию:

printf(format, args...);

Где format - формат выводимой строки, args - аргументы, которые, соответственно, под сей формат и вставляются. Это отнюдь не аргументы командной строки, прошу не путать. Это аргументы функции printf.

Похоже, я забил вам голову printf`ом, но на время забудте о нем. Есть более прогрессивный cout, просто printf в этом контексте был более уместен.

Кстати, запомним, что элемент массива argv под индексом 0 - имя самой программы, а потому будем использовать argv[1]. argc же содержит общее число аргументов, которые были переданы нашей программе.

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

Удачи.


Есть вопросы? Спроси на нашем форуме!!
Нет комментариев

Оставлять комментарии можно только зарегистрированным




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