69730

Параметри функції main( )

Домашняя работа

Информатика, кибернетика и программирование

Параметр argv - масив покажчиків на рядки; argc - параметр типа int, значення якого визначає розмір масиву argv, тобто кількість його елементів, envp - параметр-масив покажчиків на, символьні рядки, кожна з яких містить опис однієї із змінних середовища (оточення).

Украинкский

2014-10-09

32 KB

0 чел.

Самостійне вивчення

Тема 7: Параметри функції main( )

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

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

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

Призначення параметрів функції main() — забезпечити зв'язок виконуваної програми з операційною системою, точніше, з командним рядком, з якого запускається програма і в яку можна вносити дані і тим самим передавати виконуваній програмі будь-яку інформацію.

Якщо усередині функції main() немає необхідності звертатися до інформації з командного рядка, то параметри звичайно опускаються.

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

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

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

С:\CATALOG\EXAMPLE.ЕХЕ

Значення argc в цьому випадку буде рівне 1, а рядок, який адресує покажчик argv[0], буде таким:

"С:\CATALOG\EXAMPLE.ЕХЕ"

Як ілюстрація сказаного приведемо програму, яка виводить на екран дисплея всю інформацію з командного рядка, розміщуючи кожне "слово" на новому рядку екрану.

#include  <stdio.h>

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

{

int   і ;

for   (i=0;   i<argc;   i++)

printf("\n  argv   [%d]   ->  %s", i, argv[i] ;

}

Нехай програма запускається з такого командного рядка:

С:\WP\test66   11  22   33

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

argv  [0]   -> С:\WP\test66.exe

argv  [1]   -> 11

argv  [2]   -> 22

argv  [3]   -> 33

В головній програмі main( ) дозволено використовувати і третій параметр char * envp[ ]. Його призначення - передати в программу всю інформацію про оточення, в якому виконується програма. Наступний приклад ілюструє можливості цього третього параметра основної функції main( ).

#include  <stdio.h>

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

{

int n;

printf("\nПрограмма '%s' "

         "\nЧисло параметрів при запуску: %d", argv[0], argc-l);

for (n=l; n<argc; n++)

printf("\n%d-й параметр: %s", n, argv[n]);

printf("\n\nСписок змінних оточення:");

for (n=0; envpt[n]; n++)

printf("\n%s", envp[n]);

}

Нехай програма "запущена" на виконання в MS-DOS під Windows 95 з такого командного рядка:

С:\WWP\TESTPROG\MAINENVP.EXE   qqq www

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

Програма   ' С: \WWP\TESTPROG\MAINENVP. ЕХЕ '

Число  параметрів  при  запуску:   2

1-й  параметр:   qqq

2-й параметр: www

Список змінних оточення:

ТМР=С: \WINDOWS\TEMP

PROMPT=$p$g

winbootdir=C: \WINDOWS

COMSPEC=C:\WINDOWS\COMMAND.COM

TEMP=c:\windows\temp

CLASSPATH=.;c:\cafe\java\lib\classes.zip

HOMEDRIVE=c:

HOMEPATH=\cafe\java

JAVA_HOME=c:\cafe\Java

windir=C: \WINDOWS

NWLANGUAGE=English

PATH=C:\CAFE\BIN; C:\CAFE\JAVA\BIN; C:\BC5\BIN;

C:\WINDOWS; C:\WINDOWS\COMMAND; C:\NC;

C:\ARC;С:\DOS;C:\VLM;C:\TC\BIN

CMDLINE=tC

Через масив покажчиків envp[] програмі доступний набір символьних рядків, створюючих оточення програми. Частіше за все кожний рядок містить таку інформацію:

ім'я_змінної = значення_змінної

Наприклад, в приведених результатах ім'я змінної ТМР пов'язано з ім'ям каталога для тимчасових даних. Змінивши значення змінної ТМР, можна "примусити" програму використовувати для зберігання тимчасових даних інший каталог. Для роботи з рядками оточення в програмах на мові Сі використовують функції getenv() і putenv().


 

А также другие работы, которые могут Вас заинтересовать

329. Разработка организации технического обслуживания и ремонта МТП в ЦРМ хозяйства 2.51 MB
  Определение количества технических обслуживаний и ремонтов тракторов и автомобилей, распределение их по кварталам. Определение трудоемкости технических обслуживаний и ремонтов для тракторов и автомобилей. Подбор основного технологического оборудования и расчет площади участка.
330. Использование средств VBA для вычисления корня функционального уравнения с помощью численных методов 220 KB
  Описание заданного численного метода. Программа процедуры вычисления корня. Результаты вычисления значения корня для заданных пяти вариантов допустимой ошибки. Аргументы процедуры Koren.
331. Государственное регулирование занятости и трудоустройства молодежи на рынке труда 352.5 KB
  Теоретико-методологические основы исследования государственного регулирования молодежной безработицы. Молодежная безработица в современной России, в Агинском Бурятском Округе. Пути улучшения государственного направления по обеспечению занятости молодежи.
332. Современные проблемы организации коммерческой деятельности на примере магазина Рекорд 630 KB
  Основные направления организации коммерческой деятельности малых предприятий. Современное состояние организации коммерческой деятельности на малом предприятии Рекорд Рекомендации по совершенствованию организации коммерческой деятельности на малых предприятиях.
333. Расчет редуктора в выбранном электродвигателе 5.16 MB
  Пределы выносливости при симметричном цикле изгиба для материала шестерен. Межосевое расстояние из условия контактной прочности зубьев. Ориентировочный расчет валов редуктора. Коэффициенты запаса прочности для предположительно опасных сечений каждого вала.
334. Организация работы воспитателя в логопедической группе для детей с общим недоразвитием речи 195.5 KB
  Обучение детей с общим недоразвитием речи по коррекционной программе в условиях специализированной группы для детей с общим недоразвитием речи позволяет устранить речевые нарушения и подготовить детей к обучению в школе.
335. Жилой 5-ти этажный 2 секционный дом в город Чита 185.5 KB
  Архитектурно-конструктивная часть Фасад 1-9; План 1-го и типового этажей. генеральный план. Схемы расположения фундаментов, плит перекрытия и покрытия; план кровли, разрез 1-1 конструктивные узлы. Защита конструкций от коррозии, гниения и возгорания.
336. Древнейший период истории Сурского края 27.5 KB
  Исследователи выделяют следующие этапы начальной истории человечества: палеолит(древний каменный век)-2,6 млн.- 10 тыс.лет до н.э.; мезолит-10 тыс.-6 тыс.лет до н.э.; неолит(новый каменный век)-6 тыс.-4-3 тыс.лет до н.э.; энеолит(медно-каменный век) 4-3 тысячелетия до н.э.
337. Расчёт области несмешиваемости в системе In-Ga-Sb 236 KB
  Термодинамические модели растворов. Гетерогенные равновесия в трехкомпонентных системах с двумя двойными полупроводниковыми соединениями. Несмешиваемость и спинодальный распад. Расчет области несмешиваемости квазибинарной тройной системы InGaSb.