Аргументи функції main () argv і argc
Іноді при запуску програми буває корисно передати їй будь-яку інформацію. Зазвичай така інформація передається функції main () за допомогою аргументів командного рядка. Аргумент командного рядка - це інформація, яка вводиться в командному рядку операційної системи слідом за ім'ям програми. Наприклад, щоб запустити компіляцію програми, необхідно в командному рядку після підказки набрати приблизно наступне:
назва програми є аргумент командного рядка, він вказує ім'я тієї програми, яку ви збираєтеся компілювати.
Щоб прийняти аргументи командного рядка, використовуються два спеціальних вбудованих аргументу: argc і argv. Параметр argc містить кількість аргументів у командному рядку і є цілим числом, причому він завжди не менш 1, тому що першим аргументом вважається ім'я програми. А параметр argv є покажчиком на масив покажчиків на рядки. У цьому масиві кожен елемент вказує на будь-якої аргумент командного рядка. Всі аргументи командного рядка є строковими, тому перетворення яких би то ні було чисел в потрібний двійковий формат має бути передбачено в програмі при її розробці.
Ось простий приклад використання аргументу командного рядка. На екран виводяться слово Привіт і ваше ім'я, яке треба мати вигляд аргументу командного рядка.
Якщо ви назвали цю програму name (ім'я) і ваше ім'я Том, то для запуску програми слід в командний рядок ввести name Том. В результаті виконання програми на екрані з'явиться повідомлення Привіт, Том.
У багатьох середовищах всі аргументи командного рядка необхідно відокремлювати один від одного пробілом або табуляцією. Коми, крапки з комою і тому подібні символи роздільниками не зважають. наприклад,
складається з трьох символьних рядків, в той час як
являє собою одну символьний рядок - коми, як правило, роздільниками не зважають.
Якщо в рядку є прогалини, то, щоб з неї не вийшло кілька аргументів, в деяких середовищах цей рядок можна укладати в подвійні лапки. В результаті вся рядок буде вважатися одним аргументом. Щоб докладніше дізнатися, як у вашій операційній системі задаються параметри командного рядка, вивчіть документацію цієї системи.
Дуже важливо правильно оголошувати argv. Ось як це роблять частіше за все:
Порожні квадратні дужки вказують на те, що у масиву невизначена довжина. Тепер отримати доступ до окремих аргументів можна за допомогою індексації масиву argv. Наприклад, argv [0] вказує на першу символьний рядок, якій завжди є ім'я програми; argv [1] вказує на перший аргумент і так далі.
Іншим невеликим прикладом використання аргументів командного рядка є наведена далі програма countdown (рахунок в зворотному порядку). Ця програма вважає в зворотному порядку, починаючи з будь-якого значення (зазначеного в командному рядку), і подає звуковий сигнал, коли доходить до 0. Зверніть увагу, що перший аргумент, що містить початкове значення, перетворюється в ціле значення за допомогою стандартної функції atoi (). Якщо другим аргументом командного рядка (а якщо вважати аргументом ім'я програми, то третім) є рядок "display" (висновок на екран), то результат відліку (в зворотному порядку) буде виводитися на екран.
Зверніть увагу, якщо аргументи командного рядки не будуть вказані, то буде виведено повідомлення про помилку. У програмах з аргументами командного рядка часто робиться наступне: в разі, коли користувач запускає ці програми без введення потрібної інформації, виводяться інструкції про те, як правильно вказувати аргументи.
Щоб отримати доступ до окремого символу одного з аргументів командного рядка, введіть в argv другий індекс. Наприклад, наступна програма посимвольний виводить всі аргументи, з якими її викликали:
Пам'ятайте, перший індекс argv забезпечує доступ до рядка, а другий індекс - доступ до її окремим символам.
Зазвичай argc і argv використовують для того, щоб передати програмі початкові команди, які знадобляться їй при запуску. Наприклад, аргументи командного рядка часто вказують такі дані, як ім'я файлу, параметр або альтернативне поведінку. Використання аргументів командного рядка надає вашій програмі "професійний зовнішній вигляд" і полегшує її використання в пакетних файлах.
Імена argc і argv є традиційними, але не обов'язковими. Ці два параметри в функції main () ви можете назвати як завгодно. Крім того, в деяких компіляторах для main () можуть підтримуватися-додаткові аргументи, тому обов'язково вивчіть документацію до вашого компілятору.