Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание программ на С++.doc
Скачиваний:
18
Добавлен:
29.09.2019
Размер:
1.59 Mб
Скачать

Доступ к argv и argc

Если вы запускаете программу из системной подсказки, командная строка, которую вы вводите, становится вашей командной строкой:

С:\> COPY SOURCE.DOC TARGET.DOC <ENTER>

В данном случае командная строка указывает команду (COPY) и два аргумента (имя файлов SOURCE. DOC и TARGET. DOC). Чтобы разрешить вашей программе доступ к командной строке, C++ передает два параметра в функцию main:

void main(int argc, char *argv[])

Первый параметр argc содержит количество элементов в массиве argv.Например, в случае предыдущей команды COPY параметр argc должен содержать значение 3 (он включает имя команды и два аргумента). Следующая программа SHOWARGC.CPP использует параметр argc для вывода количества аргументов командной строки:

#include <iostream.h>

void main(int argc, char *argv[])

{     cout << "Количество аргументов командной строки равно " << argc << endl;  }

Выберите время для эксперимента с этой программой, вызывая ее с разным количеством параметров, как показано ниже:

С:\> SHOWARGC А В С <ENTER>

Количество аргументов командной строки равно 4

В зависимости от типа компилятор может рассматривать аргументы, которые группируются внутри двойных кавычек, в качестве одного аргумента:

С:\> SHOWARGC "Это один аргумент" <ENTER>

Количество аргументов командной строки равно 2

Рис. 36. Массив argv указывает аргументы командной строки.

Второй параметр функции main с именем argv представляет собой массив указателей на символьные строки, которые содержат индивидуальные части командной строки. Например, рис. 36 иллюстрирует, как элементы массива argv могли бы указывать записи командной строки.

Следующая программа SHOWARGV.CPP использует оператор for для вывода элементов массива argv (командная строка программы). Программа запускается с первого элемента массива (имя программы) и затем выводит каждый элемент, пока значение переменной цикла не станет больше, чем argc:

#include <iostream.h>

void main(int argc, char *argv[])

{     int i;     for (i = 0; i < argc; i++) cout << "argv[" << i << "] содержит " << argv[i] << endl;  }

Откомпилируйте и запустите эту программу, используя командную строку, подобную следующей:

С:\> SHOWARGV А В С <ENTER>

argv[0] содержит SHOWARGV.EXE

argv[l] содержит А

argv[2] содержит В

argv[3] содержит С

Доступ к аргументам командной строки

Для увеличения количества задач, выполняемых программой, C++ позволяет вашей программе обращаться к аргументам командной строки, используя два параметра, которые C++ передает в main. Первый параметр argc содержит количество аргументов командной строки (включая имя программы). Второй параметр argv представляет собой массив указателей на символьные строки. Каждая символьная строка соответствует аргументу командной строки. Чтобы обратиться к аргументам командной строки, измените заголовок функции main, как показано ниже:

void main(int argc, char *argv[])

Выполнение цикла, пока argv не содержит null

Как вы уже знаете, программы C++ используют символ NULL для завершения символьной строки. Подобным способом C++ использует символ NULL, чтобы отметить последний элемент массива argv.Следующая программа ARGVNULL.CPP изменяет оператор for предыдущей программы, чтобы выполнять цикл по элементам argv, пока текущий элемент argv не будет равен NULL:

#include <iostream.h>

void main(int argc, char *argv[])

{     int i;     for (i = 0; argv[i] != NULL; i++) cout << "argv[" << i << "] содержит " << argv[i] << endl;  }