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().


 

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

78948. Роль государства в управлении научно-техническим потенциалом 43 KB
  Четко проступает ряд новых сформировавшихся за последние десятилетия тенденций во взаимоотношениях науки и государства внутри самой сферы науки между отдельными ее составляющими и наконец между наукой и обществом в целом. Государство выступает сегодня по отношению к науке по крайней мере в шести ипостасях: как законодатель устанавливающий фундаментальные правовые основы функционирования общества и в том числе его научнотехнической сферы; как один из основных источников финансирования научных исследований и разработок; как массовый...
78950. Этические проблемы науки 20 века 42.5 KB
  Этические проблемы науки 20 века. Этика науки Этика науки изучает нравственные основы научной деятельности.Этические проблемы науки начала ХХ1в. Этические проблемы науки рождались в связи с развитием физики биологии в частности генетики психологии.
78951. Правовое регулирование научной деятельности 38 KB
  Правовое регулирование научной деятельности Одним из фундаментальных вопросов современного общества является вопрос об отношении к интеллектуальному труду правовому механизму использования результатов такого труда и регулирования возникающих при этом правоотношений. Правовые аспекты интеллектуальной деятельности лежат в плоскости решения проблем распределения прав на ее результаты с необходимостью охраны и защиты интеллектуальных достижений. Продуктом умственной деятельности оказывается знание. №982 Об использовании результатов...
78952. Философия техники (фт), ее генезис, предмет и задачи 47 KB
  Философия техники фт ее генезис предмет и задачи. Проблема возникновения техники с разделением труда была поставлена Гегелем. Он показал важную роль техники в возникновении капитализма показал разрушительное воздействие машинного производства на человека.Ленк назвал Маркса первым философом техники.
78953. Становление, развитие и специфика технических наук 56.5 KB
  Становление развитие и специфика технических наук. Техника большую часть своей истории была мало связана с наукой; люди могли делать и делали устройства не понимая почему они так работают. Инженеры провозглашая ориентацию на науку в своей непосредственной практической деятельности руководствовались ею незначительно. После многих веков такой автономии наука и техника соединились в XVII веке в начале научной революции.
78954. Сущность и природа техники 47.5 KB
  Сущность и природа техники. Существует 5 основных подходов сущности техники. отношением: Техника и бытие Техника и человек Техника и природа Техника и социокультурный мир Техника и Бог Даются следующие трактовки техники: Онтологическая Хайдеггер. Это характерно для создания техники ремесленным трудом не преминим к современной технике.
78955. Технология и ее связь с техникой 47 KB
  Впервые термин «технология» появился в 70-х годах 18 века в Западной Европе. Если техники – «это», то технология – «как это сделано». Если техника – способ, то технология – способ способа. Если техника – есть ставшее, то технология – способ становления, если техника- способ преобразования мира, то технология – организация использование чел. этих средств. Если техника – артефакт, то технология – метод создания артефактов и учения о нем.