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


 

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

54630. ДОДАВАННЯ ТА ВІДНІМАННЯ НАТУРАЛЬНИХ ЧИСЕЛ 81.5 KB
  Наступний пункт регати – бухта Геометрична. Уважно подивіться на нашу карту. Чий це прапор? Це ж пирати! Допоможемо врятувати від них мешканців бухти. Для цього необхідно виконати пиратські вимоги: розв’язати геометричні завдання. Командам необхідно назвати зображені фігури і показати, скільки їх всього зображено.
54631. Узагальнення теоретичних знаньз теми «Океани» 156 KB
  Мета: узагальнити, систематизувати та визначити рівень знань, вмінь, навичок учнів з даної теми; виховувати зацікавленість до уроків географії, уміння працювати в колективі.
54632. МАНДРІВКА ОКЕАНОМ КОМП’ЮТЕРНИХ ЗНАНЬ 40.5 KB
  Мета: повторити матеріал вивчений у першому семестрі коригувати знання учнів розвивати пізнавальну активність сприяти розвитку уваги виховувати інтерес до інформатики. Сьогодні я вас запрошую у подорож але не просту а казкову подорож океаном комп’ютерних знань на чудовому кораблі. Що таке інформація Що вивчає наука інформатика Для чого призначений комп’ютер Для чого призначена клавіатура комп’ютера Для чого призначена клавіша...
54633. Мандрівка океанами 45.5 KB
  Вступне слово вчителя 3 хвилини Ви вже звикли до вигляду нашої планети де материки й океа ни розташовані в певному порядку На карті ви бачите дві Америки –Північну і Південну що простягли одна одній руки і перегородили Світовий океан; Африку плічопліч із Євра зією самотній п’ятикутник Австралії відокремлену білу Антарктидуоточену океанічним кільцем. 250 млн років тому на нашій планеті існував один гігантський материк – Пангея що омивався єдиним океаном. Між ними...
54634. Урок – гра «Географічний чемпіонат» 75 KB
  Мета: узагальнити і перевірити знання з теми “Океани”, повторити географічну номенклатуру; розвивати допитливість, увагу, спостережливість, кмітливість, образне мислення учнів; прищеплювати любов до природи, виховувати екологічну свідомість.
54635. Окупаційний режим і розгортання руху Опору в Україні 124.5 KB
  Мета. Визначити суть окупаційного режиму в Україні, наслідки, до яких привела політика «нового порядку». Показати трагедію українського народу в ході війни, проаналізувати розгортання руху Опору в Україні. Виховувати почуття патріотизму, поваги та шани до ветеранів та учасників Великої Вітчизняної війни, почуття неприязні до поневолення, рабства, ідей фашизму та нацизму.
54636. Історія в літературі рідного краю. (Зустріч із письменницею Ольгою Хало) 70 KB
  Мета: через призму ліри О.Хало познайомити учнів з історією рідного краю; виховувати почуття патріотизму, поваги до історичної минувшини лубенської землі. Обладнання: виставка творів О.Хало, ілюстрації до її творів, проектор, магнітофон.
54637. Олимпийские игры 41.5 KB
  Если у названного животного длинный хвост игроки поднимают правую руку и машут ею если же хвоста нет или он короткий игроки хлопают. Лошадь длинный коза короткий корова длинный лиса длинный заяц короткий овца короткий тигр длинный медведь короткий свинья короткий осёл длинный белка длинный.
54638. Урок – путешествие на Олимп 43 KB
  Трагедия с греческого переводиться как Афинский район Керамик дал название Пантикапей это современная Эгейское море назвали в честь царя Во время Марафонской битвы греки сражались с Правление Перикла называют золотым Сколько подвигов совершил Геракл Кого не допускали на Афинское собрание...