logo
Подбельский Фомин_Программирование на языке СИ_

5.8. Параметры функции main( )

В соответствии с синтаксисом языка Си основная функция каждой программы может иметь такой заголовок:

int main (int argc, char *argv [ ], char *envp[ ] )

Параметр argv - массив указателей на строки; argc - параметр типа int, значение которого определяет размер массива argv, т.е. количество его элементов, envp - параметр-массив указателей на символьные строки, каждая из которых содержит описание одной из переменных среды (окружения). Под средой понимается та программа (обычно это операционная система), которая "запустила" на выполнение функцию main( ).

Назначение параметров функции main( ) - обеспечить связь выполняемой программы с операционной системой, точнее, с командной строкой, из которой запускается программа и в которую можно вносить данные и тем самым передавать исполняемой программе любую информацию.

Если внутри функции main( ) нет необходимости обращаться к информации из командной строки, то параметры обычно опускаются.

Если программист "запускает" программу на языке Си из интегрированной среды разработки (например, Turbo С), то он редко использует командную строку и должен предпринимать специальные меры, чтобы увидеть эту строку или внести в нее нужную информацию. (В Turbo С нужно в главном меню выбрать пункт RUN, а затем в ниспадающем меню выбрать пункт ARGUMENTS...).

При запуске программы из операционной системы командная строка явно доступна, и именно в ней записывается имя выполняемой программы. Вслед за именем можно разместить нужное количество "слов", разделяя их друг от друга пробелами. Каждое "слово" из командной строки становится строкой-значением, на которую указывает очередной элемент параметра argv[i], где 0<i<argc. Здесь нужно сделать одно уточнение.

Как и в каждом массиве, в массиве argv[ ] индексация элементов начинается с нуля, т.е. всегда имеется элемент argv[0]. Этот элемент является указателем на полное название запускаемой программы. Например, если из командной строки выполняется обращение к программе EXAMPLE из каталога CATALOG, размещенного на диске С, то вызов в MS-DOS выглядит так:

Значение argc в этом случае будет равно 1, а строка, которую адресует указатель argv[0], будет такой:

В качестве иллюстрации сказанного приведем программу, которая выводит на экран дисплея всю информацию из командной строки, размещая каждое "слово" на новой строке экрана.

Пусть программа запускается из такой командной строки:

Результат выполнения программы:

В главной программе main( ) разрешено использовать и третий параметр char * envp[]. Его назначение передать в программу всю информацию об окружении, в котором выполняется программа. Следующий пример иллюстрирует возможности этого третьего параметра основной функции main( ).

Пусть программа "запущена" на выполнение из такой командной строки:

Результаты выполнения программы:

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