Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Использование аргументов командной строки.doc
Скачиваний:
1
Добавлен:
14.11.2019
Размер:
72.19 Кб
Скачать

Выполнение цикла, пока 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; }

Трактовка argv как указателя

C++ позволяет вам обращаться к элементам массивов, используя указатели. Следующая программа ARGVPTR.CPP трактует argv как указатель на указатель символьной строки (другими словами, указатель на указатель), чтобы вывести содержимое командной строки:

#include <iostream.h>

void main(int argc, char **argv)

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

Задание: Проанализируйте объявление параметра argvв main:

void main(int argc, char **argv)

Использование аргументов командной строки

Следующая программа FILESHOW.CPP использует аргументы командной строки для вывода содержимого указанного пользователем файла на экран. Например, чтобы использовать программу FILESHOW для вывода содержимого файла AUTOEXEC.BAT из корневого каталога, ваша командная строка становится следующей:

C: \> FILESHOW \AUTOEXEC.BAT <Enter>

Следующие операторы реализуют программу FILESHOW.CPP. Эта программа начинается с проверки параметра argc, чтобы убедиться, что пользователь указал файл в командной строке. Если пользователь включает имя файла параметр argc будет содержать значение 2. Далее программа открывает и выводит содержимое файла. Если программа не может открыть указанный файл, она выводит сообщение об ошибке и завершается:

#include <iostream.h>

#include <fstream.h>

#include <stdlib.h>

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

{    char line[256];    if (argc < 2)

   {       cerr << "Вы должны указать имя файла" << endl;       exit(1);    }

   ifstream input_file(argv[1]) ;    if (input_file.fail()) cerr << "Ошибка открытия BOOKINPO.DAT" << endl;    else

   {       while ((! input_file.eof()) && (! input_file.fail()))

      {          input_file.getline(line, sizeof(line));          if (! input_file.fail()) cout << line << endl;       }    } }

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

Большинство операционных систем позволяют определять переменные среды, к которым программы могут обращаться для определения разных параметров, таких как командный путь. Например, при использовании среды MS-DOS, переменные среды устанавливаются или выводятся с помощью команды SET. В зависимости от типа компилятора можно обращаться к переменным среды из программы, используя третий параметр main с именем env. Подобно параметру argv, параметр env представляет собой указатель на массив указателей на символьные строки. Также, подобно argv, C++ завершает этот массив символом NULL. Если компилятор поддерживает параметр env, вы можете изменить заголовок функции main, как показано ниже:

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

Следующая программа SHOWENV.CPP выполняет цикл по элементам массива env для вывода переменных среды программы:

#include <iostream.b>

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

{    while (*env) cout << *env++ << endl; }

Эта программа просто выполняет цикл по элементам массива env, пока не встретит указатель NULL, который указывает последнюю запись массива. Если откомпилировать и запустить ее, она выведет ваши переменные среды, как показано ниже:

С:\> SHOWENV <ENTER>

ТЕМР=С:\WINDOWS\TEMP

PROMPT=$p$g

COMSPEC=C:\WINDOWS\COMMAND.СОМ

РАТН=С:\WINDOWS;С:\DOS