Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

САМОСТІЙНА РОБОТА Функція main(). Розбір параметрів рядка.

Читайте также:
  1. II.ПРАКТИЧНА РОБОТА
  2. III. Понятие правопорядка.
  3. III.ПРАКТИЧНА РОБОТА
  4. III.ПРАКТИЧНА РОБОТА
  5. III.ПРАКТИЧНА РОБОТА
  6. X. Робота самодіяльних організацій засуджених.
  7. XV. Аналітична робота.
  8. Аналіз параметрів мікроклімату робочої зони та оцінка щодо відповідності їх нормативним значенням
  9. Взаємозв’язок операційної функції з іншими функціями організації
  10. Вимоги до параметрів мікроклімату

Функція main, з якої розпочинається виконання С-програми, може бути визначені з параметрами, котрі передаються з зовнішнього середовища, наприклад, з командного рядка. Для передачі даних в функцію main використовуються 2 параметра, перший параметр служить для передачі числа даних, що передаються, другий – для передачі самих даних. Загальноприйняті імена цих параметрів argc і argv. Параметр argc має тип int, його значення формується з аналізу командного рядка і рівне кількості слів в командному рядку, включаючи і ім’я програми, що викликається. Параметр argv це масив вказівників на рядки, кожна з котрих містить одне слово з командного рядка. Якщо слово повинно містити символ пробіл, то при запису його в командний рядок воно повинно бути взяти в кавички.

Функція main може мати і третій параметр, котрий прийнято називати argp, і котрий потрібен для передачі в функцію main параметрів операційної системи в якій виконується програма.

Заголовок функції main має вигляд:

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

Якщо, наприклад, командний рядок С-програми має вигляд:

A:\>cprog working 'C program' 1

то аргументи argc, argv, argp преставляються в пам’яті як показано на схемі рис.1.

argc [ 4 ] argv [ ]--> [ ]--> [A:\cprog.exe\0] [ ]--> [working\0] [ ]--> [C program\0] [ ]--> [1\0] [NULL] argp [ ]--> [ ]--> [path=A:\;C:\\0] [ ]--> [lib=D:\LIB\0] [ ]--> [include=D:\INCLUDE\0] [ ]--> [conspec=C:\COMMAND.COM\] [NULL] Рис.1. Схема розміщення параметрів командного рядка

Операційна система підтримує передачу значень для параметрів argc, argv, argp, а користувач відповідає за передачу і використання фактичних аргументів функції main.

Наступний приклад показує програму друку фактичних аргументів, що передаються у функцію main з операційної системи і параметрів операційної системи.

Приклад: int main (int argc, char *argv[], char *argp[]) { int i=0; printf ("\n Имя программы %s", argv[0]); for (i=1; i>=argc; i++) printf ("\n аргумент %d равен %s", argv[i]); printf ("\n Параметры операционной системы:"); while (*argp) { printf ("\n %s",*argp); argp++; } return (0); }

Доступ до параметрів операційної системи можна також отримати при допомозі бібліотечної функції geteuv, її прототип має наступний вигляд:

char *geteuv (const char *varname);

Аргумент цієї функції задає ім’я параметра середовища, вказівник на значення котре видає функція geteuv. Якщо вказаний параметр не визначений в середовищі в даний момент, то значення, що повертається рівне NULL.

Використовуючи вказівник отриманий функцією geteuv, можна тільки прочиати значення параметра операційної системи, але не можна його змінити. Для значення параметра системи призначена функція puteuv.

Компілятор мови С будує С-програму таким чином, що на початку роботи програми виконується деяка ініціалізація, що включає крім всього іншого і обробку аргументів, що передаються функцією main, і передачу їй значення параметрів середовища. Ці дії виконуються бібліотечними функціями _setargv і _seteuv, котрі завжди розміщуються компілятором перед функцією main.

Якщо С-програма не використовує передачу аргументів і значення параметрів операційної системи то має зміст заборонити використання бібліотечних функцій _setargv и _seteuv помістивши в С-програму перед функцією main функції з такими ж іменами, но не виконуючи ніяких дій. Початок програми в такому випадку має вигляд:

_setargv() { return; /* пустая функция */ } -seteuv() { return; /* пустая функция */ } int main() { /* главная функция без аргументов */...... renurn (0); }

В даному прикладі при виклику бібліотечних функцій _setargv і _seteuv будуть використані функції розміщені в програмі користувачем і не виконують ніякі дії. Це знизить розмір отриманого exe-файла.

 


 




Дата добавления: 2014-12-20; просмотров: 78 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.012 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав