Програмування С, С++теорія та практика (частина 1)
1.16.8 Додаткові можливості функціїтаіп()
Потрібно зауважити, що функція таіп() може як повертати деяке значення в операційну систему, так і приймати параметри.
тип таіп(іп{ агдс, сИаг* агду[], сИаг *епу[]) { /* ... */ }
Імена параметрів можуть мати будь-які назви, але прийнято використовувати агдс, агду та епу. Перший параметр агдс містить ціле число аргументів командного рядка, що посилається функції таіп();
атду - це масив покажчиків на рядки. Для версії ДОС агду[0] містить повний шлях програми, що в даний момент виконується, агду[1] та агду[2] відповідно вказує на перший та другий після імені програми параметри командного рядка, агду[агдс-1] вказує на останній аргумент, агду[агдс] містить МПЬЬ.
епу - це масив покажчиків на рядки, причому кожний елемент епу[] містить рядок типу ЕМУУАК=значення. ЕМУУАК - це ім’я змінної середовища.
Можливо для першого ознайомлення з Сі ця інформація не є обов’язковою, проте не може не зацікавити приклад програми, що демонструє найпростіший шлях використання аргументів, що передаються функції таіп():
/* Використання аргументів функції таіп() */
#іпсіи<3е <зЬЗіо.Ь>
#іпсіи<3е <зЬ31іЬ.Ь>
тоііЗ таіп(іп£ агдс, сЬаг *агду[], сЬаг *ег^[])
{
іпЬ і ;
ргіп££("Значення агдс = %<3 \п\п",агдс);
ргіп££("В командному рядку міститься %<3 параметрів \п",агдс); £ог (і=0; і<агдс; і++)
ргіп££(" агду[%<3]: %з\п", і, агду[і]); ргіп££("Середовище містить наступні рядки:\п");
£ог (і=0; ег^[і] != ШЬЬ; і++)
ргіп££(" епу[%<3]: %з\п", і, епу[і]);
}
Організуємо виконання програми з командним рядком таким чином:
С:> с:\'Ьс\'Ьез'Ьагдз.ехе 1_з,Ь_агд "2_агд " 3 4 "йитту" з£ор!
В результаті роботи програми ви отримаєте приблизно наступне: Значення агдс = 7
В командному рядку міститься 7 параметрів
агд^0]: с:\'Ьс\'Ьез'Ьагдз.ехе
агд^1]: 1_з£_агд
агд^2]: 2_агд
агд^З]: 3
агду[4]: 4
агд^5] : Литту
агд^б]: з£ор!
Середовище містить наступні рядки: еп^[0]: СОМ8РЕС=С:\СОММАНБ.СОМ епу[1] : РКОМРТ=$р $д
епV[2]: РАТН=С:\8РКІНТ;С:\БО8;С:\ТС
Максимальна загальна довжина командного рядка, включаючи пробіли та ім’я самої програми, не може перевищувати 128 символів, що є Б08-обмеженням.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
