В операционной среде, обеспечивающей поддержку
языка Си, имеется возможность передать аргументы или параметры запускаемой программе с помощью командной строки.
Пример 1
Это командная строка (символ $ не входит в командную строку, это "приглашение" операционной системы).
$ a.out file1 file2
argc (сокращение от argument count)- первый параметр функции
main(), имеет смысл счетчика аргументов. Это количество слов, на которые разбивается
символами промежутков командная строка.
argv (сокращение от argument vector- вектор аргументов) — второй параметр функции
main(). Во время выполнения программы на языке Си слова из командой строки размещены в виде символьных строк в программном адресном пространстве. В этой же памяти запоминается и завершаемый нулем (
NULL)
массив адресов (
указателей) этих строк.
Пример 2
#include <stdio.h>
int main (int argc, char *argv[])
{
int i;
printf ("number of words: %d\n", argc);
for (i=0; i<argc; i++)
printf ("%s\n", argv[i]);
}
В прим. 2
argv объявляется как
массив указателей на символьные значения.
argv[0] – это адрес, по которому хранится первое слово ( в прим. 1 это
a.out);
argv[1] — адрес второго слова и т.д.
Рис. 1. Пример командной строки
Использование двукратного указателя для доступа к командной строке
Пример 3
/* печатает аргументы командной строки, используя argv как двукратный указатель*/
#include <stdio.h>
int main(int argc, char **argv)
{
for(; *argv != NULL; argv++)
printf("%s\n", *argv);
}