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

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

{

int 1;

for (i = 0; argv[i]!= NULL; i++)

cout << "argv[" << 1 << "] містить " << argv[i] << endl;

}

Трактування argv як Вказівника

Як ви вже знаєте, C++ дозволяє вам звертатися до елементів масиву, використовуючи вказівники. Наступна програма ARGVPTR.CPP трактує argv як вказівник на вказівник символьного рядка (іншими словами, вказівник на вказівник), щоб вивести вміст командного рядка:

_

Void main(int argc, char **argv)

{

int i = 0;

while (*argv)

cout << "argv[" << i++ << "] містить" << *argv++ << endl;

}

Виберіть час, щоб проаналізувати оголошення параметра argv в main:

Void main(int argc, char **argv)

Перша зірочка в оголошенні повідомляє компілятору C++, що argv є вказівником. Друга зірочка повідомляє компілятору, що argv є вказівником на вказівник - в цьому випадку вказівник на вказівник типу char. Уявіть собі argv як масив вказівників де кожний вказівник вказує на масив типу char.

Аргументи командного рядка

Для виведення вмісту файлу AUTOEXEC.BAT з кореневого каталогу на монітор можна застосувати аргументи командного рядка, наприклад у програмі FILESHOW.CPP слід записати:

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

Наступна програма FILESHOW.CPP починається з перевірки параметра argc, щоб переконатися, чи користувач вказав ім’я файлу в командному рядку. Якщо користувач включив ім'я файлу, параметр argc міститиме значення 2. Далі програма відкриває і виводить вміст файлу, використовуючи методи, викладені в параграфі 34, а коли не може відкрити вказаний файл, тоді виводить повідомлення про помилку і завершується:

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

{

char line[256];

if (argc < 2)

{

cout << "Ви повинні вказати ім'я файлу" << endl;

exit(l);

}

if stream input_file(argv[l]);

if (input_file.fail())

cout << "Помилка відкривання BOOKINFO.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 для виведення змінних середовища програми: