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


 

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

26842. Анатомо-физиологические особенности строения и пищеварения молодняка жвачных 2.42 KB
  Во время питья молока и воды или акта сосания сокращаются мышцы губ пищеводного желоба; губы смыкаются и образуют трубку составляющую как бы продолжение пищевода. Смыкание губ пищеводного желоба это рефлекторный акт возникающий при раздражении рецепторов языка и глотки в момент глотания. Емкость пищеводного желоба очень мала поэтому молоко может проходить по нему в сычуг только небольшими порциями. С ростом телят значение пищеводного желоба уменьшается губы его грубеют и смыкаются не полностью.
26843. Тонкий отдел кишечника домашних животных 8.3 KB
  тонкая кишка intestinumtenue простирается от пилоруса желудка до слепой кишки. Двенадцатиперстная кишка duodenum У всех животных она находится в правом подреберье. Тощая кишка jejunum висит на длинной брыжейке и образует множество кишечных петель ansaeintestinales. Тощая кишка без четкой границы переходит в подвздошную кишку.
26844. Печень домашних животных 7.04 KB
  Печень домашних животных. Печень hepar сложнотрубчагого строения через нее протекает вся кровь из желудка кишечника и селезенки по мощной воротной вене v. ПеченЬ по острому краю меяедолевыми вырезками incisurainterlobularis разграничивается на доли. Основная сагиттальная срединная вырезка делит печень на правую и левую доли lobushepatisdexteretsinister.
26845. Поджелудочная железа домашних животных 3.66 KB
  Проток поджелудочной железы ductuspancreaticus открывается в двенадцатиперстную кишку у одних животных вместе с желчным протоком у других самостоятельноИннервация п. Поджелудочный проток открывается вместе с желчным протоком У свиньи железа сероватожелтой окраски. Проток один открывается на 13 20 см дистальнее устья желчного протока У рогатого скота железа располагается вдоль двенадцатиперстной Кишки от 12го грудного до 2 4го поясничного позвонка под правой ножкой диафрагмы частично на лабиринте ободочной кишки. Единственный...
26846. Толстый отдел кишечника лошади 3.42 KB
  Толстая кишка лошади. Толстая кишка состоит из слепой ободочной и прямой. Слепая кишка лошади имеет объем 3237 литров. Ободочная кишка лошадей объемом 80100 литров.
26847. Толстый отдел(intestinum crassum) жвачных, свиньи и собаки 1.86 KB
  пос ледняя заканчив анусом. Она служит продолжением малой ободоч киш висит на брыжейкев тазовой полостипод позвоночником оканчив задним проходом или анусом.перед анусом она расшир в виде веретена в ампулу прям кишкиой.прямая кишс анусом фиксируся мышцами и связками к тазов костям и первым хвост позвам.
26848. Анатомический состав и общие закономерности строения органов дыхания в связи с их функцией 4.59 KB
  Органы дыхания носовая полость глотка гортань трахея бронхи и легкие обеспечивают циркуляцию воздуха и газообмен . По ним воздух поступающий через ноздри проходит в носоглотку. Гортань служит для проведения воздуха из глотки в трахею и совместно с ротовой полостью является органом звукообразования и членораздельной речи. Звук голоса возникает в результате колебания голосовых связок при выдыхании воздуха.
26850. Носовая полость(сavum nasi) и придаточные полости носа 5.75 KB
  Последние образуют паренхиму легкого снабженную громадным количеством кровеносных сосудов оплетающих густой капиллярной сетью каждую альвеолу. Дорсальный тупой край легкого margo dorsalis s.вырезки правого и левого легкого incisura cardiaca pulmonis dextri et sinistri и ворота легкого hilus pulmonis через которые в орган входят главный бронх bronchus principalis легочная артерия a. Все вместе они образуют корень легкого radix pulmonis.