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


 

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

83517. Генеральна Асамблея ООН, її структура. Порядок роботи та порядок прийняття рішень 36.41 KB
  Порядок роботи та порядок прийняття рішень Генеральна Асамблея один з головних органів ООН що складається з представників всіх державчленів ООН. Делегація кожної державичлена ООН складається не більш ніж з п\'яти представник і п\'яти їх заступників. Генеральна Асамблея в межах Статуту ООН має право обговори вати та робити рекомендації членам ООН або Раді Безпеки з будьяких питань або справ в межах Статуту крім питань що знаходяться розгляді Ради Безпеки стосовно будьякого спору або ситуації.
83518. Міжнародні конференції: поняття, правила процедури, порядок прийняття рішень 36.35 KB
  Конференції з широкими повноваженнями приймають досить детальні правила. Конференції з широким представництвом мають досип складну організаційну структуру: голова комітети підкомітетиробочі групи секретаріат. Основні організаційні питання вирішує генеральний комітет що складається з голови конференції і голів комітетів.
83519. Поняття і значення права мирного вирішення міжнародних спорів 36.45 KB
  Право мирного вирішення міжнародних спорів - галузь міжнародного права, норми та принципи якої встановлюють порядок врегулювання спорів між суб\'єктами міжнародного права мирними засобами.
83520. Поняття міжнародного спору 35.63 KB
  Міжнародний Суд ООН вбачає ознаки спору в обставинах за якими було висунуто деякі звинувачення проти ряду країн які їх відхилили консультативний висновок від ЗО березня 1950 р. Предметом міжнародного спору може бути зокрема правовий статус конкретної території розмежування державних кордонів втручання у внутрішні справи доступ до континентального шельфу тощо. Від спору слід відрізняти односторонні претензії.
83521. Види міжнародних спорів 35.18 KB
  Для міжнародного права істотним є розмежування спорів міжнародних та спорів що не мають такого характеру. У першому випадку Рада Безпеки ООН на підставі Розділу VII Статуту ООН має загальну виключну компетенцію для підтримання чи відновлення міжнародного миру та безпеки. У доктрині міжнародного права також застосовується поділ міжнародних спорів на правові юридичні в яких підставою претензій та заперечень на них виступають норми міжнародного права та політичні які ґрунтуються на політичних аргументах неправової природи. 36 Статуту спори...
83522. Засоби вирішення міжнародних спорів. «Спір і ситуація». Класифікація мирних засобів вирішення міжнародних спорів 38.21 KB
  Класифікація мирних засобів вирішення міжнародних спорів Статут ООН п. Стаття 33 Статуту ООН серед мирних засобів вирішення міжнародних спорів вказує переговори обстеження посередництво примирення арбітраж судовий розгляд звернення до регіональних органів або угод. Можна виділити дипломатичні погоджувальні та судові засоби вирішення міжнародних спорів.
83523. Дипломатичні засоби вирішення міжнародних переговорів. Безпосередні переговори і консультації. Добрі послуги і посередництво. Міжнародна примирлива процедура: слідчі і погоджувальні комісії 38.73 KB
  Переговори ведуться безпосередньо сторонами, які знаходяться у спорі. Проведення переговорів не вимагає участі третьої сторони (іншої держави, міжнародної організації). Ініціатива переговорів завжди належить сторонам спору, які тим самим здійснюють певний контроль над процесом його розв\'язання.
83524. Судові засоби вирішення міжнародних спорів. Міжнародний арбітраж як засіб мирного вирішення міжнародних спорів. Постійна палата третейського суду. Структура і компетенція Міжнародного Суду ООН 39.98 KB
  Постійна палата третейського суду. Структура і компетенція Міжнародного Суду ООН. Спробою інституалізації арбітражу було створення Постійної палати третейського суду на підставі положень Гаазьких конвенції 1899 р. Згідно зі Статутом Міжнародного Суду ООН кандидати у члени цього суду висуваються не державами а національними групами Постійної палати третейського суду тобто групами суддів Палати які представляють одну й ту саму державу.
83525. Вирішення спорів у міжнародних організаціях 39 KB
  Мирне вирішення міжнародних спорів надає широку компетенцію Раді Безпеки органу ООН який несе головну відповідальність за підтримання міжнародного миру та безпеки ст. Також компетенцію в сфері мирного вирішення міжнародних спорів має Генеральна Асамблея ООН проте вона є обмеженою на користь Ради Безпеки. Держава яка не є членом OOН також може звернутися до Ради Безпеки або Генеральної Асамблеї з приводу будьякого спору в якому вона є стороною за умови що вона заздалегідь прийме на себе зобов\'язання за...