Параметры командной строки функции main. Функция main, с которой начинается выполнение программы, может быть определена с параметрами, которые передаются из внешнего окружения
Функция main, с которой начинается выполнение программы, может быть определена с параметрами, которые передаются из внешнего окружения, например, из командной строки. Во внешнем окружении действуют свои правила представления данных, а точнее, все данные представляются в виде строк символов. Для передачи этих строк в функцию main используются два параметра, первый - служит для передачи числа передаваемых строк, второй - для передачи самих строк. Общепринятые (но не обязательные) идентификаторы этих параметров argc и argv. Параметр argc имеет тип int, его значение формируется из анализа командной строки и равно количеству слов в командной строке, включая и имя вызываемой функции. Параметр argv это массив указателей на строки, каждая из которых содержит одно слово из командной строки. Если слово должно содержать символ пробел, то при записи его в командную строку оно должно быть заключено в кавычки.
Функция main может иметь третий параметр, который принято называть argp, и который служит для передачи в функцию main параметров операционной системы (ОС), в которой выполняется программа.
Заголовок функции main с параметрами имеет вид:
int main (int argc, char *argv[], char *argp[])
Если, например, командная строка программы имеет вид:
a:\>cprog working 'C program' 1
то аргументы argc, argv, argp представляются в памяти следующим образом:
argc [ 4 ]
argv [ ] ® [ ] ® [a:\cprog.exe\0]
[ ] ® [working\0]
[ ] ® [C program\0]
[ ] ® [1\0]
[NULL]
argp [ ] ® [ ] ® [path = a:\;C:\\0]
[ ] ® [lib = d:\lib\0]
[ ] ® [include = d:\include\0]
[ ] ® [conspec = c:\command.com\]
[NULL]
ОС поддерживает передачу значений для параметров argc, argv, argp, а на пользователе лежит ответственность за передачу и использование фактических аргументов функции main.
Следующий пример представляет программу печати фактических аргументов, передаваемых в функцию main из ОС и параметров ОС.
int main ( int argc, char *argv[], char *argp[]) {
int i = 0;
printf ("\n Имя программы %s", argv[0]);
for( i=1; i>=argc; i++)
printf ("\n Аргумент %d = %s", argv[i]);
printf ("\n Параметры ОС: ");
while (*argp) {
printf ("\n %s",*argp);
argp++;
}
return 0;
}
Функция main может вызываться рекурсивно из любой функции.
Дата добавления: 2015-09-11; просмотров: 924;