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


 

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

70889. ЦЕНОВАЯ ПОЛИТИКА ОРГАНИЗАЦИИ И МЕРОПРИЯТИЯ ПО ЕЕ СОВЕРШЕНСТВОВАНИЮ 1005.5 KB
  Целью дипломной работы является на примере предприятия ЧУП «Гроднотурист» провести анализ ценовой политики гостиничного бизнеса и разработать мероприятия по ее совершенствованию. Для реализации цели выделены следующие задачи: определить сущность и специфику гостиничного бизнеса...
70890. Анализ использования трудовых ресурсов в ЗАО «Дельта» 1.28 MB
  Для изучения данной темы последовательно рассмотрим использование трудовых ресурсов на основе: анализа численности и движения рабочей силы; анализа использования рабочего времени; анализ эффективности использования трудовых ресурсов. Достижение цели возможно при постановке...
70891. Правила оформления документации при передаче дел в архив 176 KB
  Формирование исполненных документов в дела в организации осуществляется в течение всего делопроизводственного года в соответствии с утвержденной на данный год номенклатурой дел. С начала делопроизводственного года должны быть оформлены обложки дела по правилам оговоренных...
70893. СОВЕРШЕНСТВОВАНИЕ ДЕЯТЕЛЬНОСТИ ОРГАНОВ МЕСТНОГО САМОУПРАВЛЕНИЯ ПО ПРОФИЛАКТИКЕ И БОРЬБЕ С СОЦИАЛЬНО ЗНАЧИМЫМИ ЗАБОЛЕВАНИЯМИ (на примере Республики Марий Эл) 1.32 MB
  Главной целью социальной политики Российской Федерации является последовательное повышение уровня и качества жизни обеспечение всеобщей доступности основных социальных услуг прежде всего качественной медицинской помощи и социального обслуживания обеспечение занятости населения.
70894. ФИНАНСОВО-ПРАВОВЫЕ ОСНОВЫ МЕСТНОГО САМОУПРАВЛЕНИЯ 407.5 KB
  Цель настоящей выпускной квалификационной работы состоит в формировании целостного представления об особенностях правовой природы финансовых основ местного самоуправления, особенностей, касающихся устава муниципального образования, муниципальной собственности и бюджета...
70895. Повышение эффективности стимулирования труда на предприятии ООО «Юниор» 244.61 KB
  При изучении теоретических основ стимулирования труда на предприятии автор данной работы опирается на разработки известных специалистов. Опираясь на теорию и анализ действующей системы стимулирования труда автор проявил свою зрелость и обеспечил успешное решение задач...
70896. Модель обоснования управленческого решения в заключении импортных контрактов на примере предприятия 426.47 KB
  Актуальность темы исследования обусловлена тем, что: во–первых, до сих пор в экономической литературе ведутся дискуссии по содержанию импортных контрактов; во–вторых, в современной экономической теории не исследованы особенности импортных контрактов...
70897. Техническое перевооружение пекарни ООО «МТУ-Хлеб» в городе Чебоксары 1.58 MB
  Прирост населения за счет экономического и культурного развития за 5 лет из расчета 1 в год от коренного населения 546 Общее количество потребителей хлеба 1420 Потребность населения в хлебе определяется умножением общего количества потребителей 142000 человек на среднесуточную норму...