Внешние параметры для программы и переменные среды
При запуске программы командной строкой в нее можно передать любые параметры. Их можно далее оформить похожим образом как опции. В общем случае функция main() получает на вход три параметра : argc – количество параметров командной строки, argv – собственно параметры командной строки и envp – переменные среды выполнения С-программ. Фактически параметр envp указывает на массив строк, описывающих среду. Каждая строка этого массива имеет вид : “имя_переменной_среды = значение”. Вся указанная последовательность является строкой.
Пример
void main (argc,argv,envp)
int argc; /*число параметров argv*/
char **argv; /*вектор параметров строк*/
char **envp; /*вектор переменных среды */
{ register int j;
register char **p;
/*печать параметров*/
for (j=0;j<argc;j++)
printf(“arg%d: %s\n”,j,argv[j]);
/* печать переменных среды */
for(p=envp; *p!=(char*)0; p++)
printf(“%s\n”,*p);
}
В данном случае имеем массивы указателей : char *argv[], * envp[];
Первый аргумент имеет отношение к строке интерпретатора:
argv[] имя пр-мы пар1\0 парargc-1 \0
argc [0..n]
. . . |
Переменные среды используются программами DOS или других платформ (языка оболочки shell) и передаются программе через параметр envp.
Во втором случае оператора for выполняется проверка на равенство указателя нулю, так как количество передаваемых аргументов заранее неизвестно.
envp[] пар0 пар1… , где пар в виде указанных ранее строк
. . . |
=0 (или NULL)
Вопросы для самоконтроля
- В чем отличия выполнения операторов break и continue?
- Как выполняется оператор for(;;){…}?
- Для чего используется оператор defaulte?
- В каких случаях применяется пустой оператор?
- Допустимо ли в языке С использование короткого оператора if следующего вида «if(выражение)оператор;»?
- Укажите условие повтора тела цикла в операторе «while(выражение)оператор;»!
- Перечислите типы и число параметров функции main()!
Вопросы для самостоятельного изучения
- Как выглядит синтаксис и какова семантика выполнения оператора do-while?
- Какие типы констант могут использоваться в метках оператора case?
Дата добавления: 2016-05-26; просмотров: 1856;