logo

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

Найважливішою функцією C є функція main(). Зазвичай він визначається з типом повернення int і без параметрів.

int main() { ... }>

Ми також можемо надати аргументи командного рядка мовою C. Аргументи командного рядка – це значення, наведені після назви програми в оболонці командного рядка операційних систем. Аргументи командного рядка обробляються функцією main() програми на С.



Щоб передати аргументи командного рядка, ми зазвичай визначаємо main() із двома аргументами: перший аргумент — це кількість аргументів командного рядка а другий - а список аргументів командного рядка.

пошукова система та приклади

Синтаксис

int main(int argc, char *argv[]) { /* ... */ } or int main(int argc, char **argv) { /* ... */ }>

тут,

    argc (ARGument Count) — це ціла змінна, яка зберігає кількість аргументів командного рядка, переданих користувачем, включаючи назву програми. Отже, якщо ми передаємо значення програмі, значення argc буде 2 (один для аргументу та один для імені програми)
  • Значення argc має бути невід’ємним.
  • argv (ARGument Vector) — це масив символьних покажчиків із переліком усіх аргументів.
  • Якщо argc більше нуля, елементи масиву від argv[0] до argv[argc-1] міститимуть покажчики на рядки.
  • argv[0] — це ім’я програми. Після цього до argv[argc-1] кожен елемент — це аргументи командного рядка.

Для кращого розуміння запустіть цей код на своїй машині Linux.



приклад

Наведений нижче приклад ілюструє друк аргументів командного рядка.

C






// C program named mainreturn.c to demonstrate the working> // of command line arguement> #include> // defining main with arguments> int> main(>int> argc,>char>* argv[])> {> >printf>(>'You have entered %d arguments: '>, argc);> >for> (>int> i = 0; i printf('%s ', argv[i]); } return 0; }>

>

>

Вихід

You have entered 4 arguments: ./main geeks for geeks>

для термінального введення

$ g++ mainreturn.cpp -o main $ ./main geeks for geeks>

Примітка: Інші залежні від платформи формати також дозволені стандартами C; наприклад, Unix (хоча не POSIX.1) і Microsoft Visual C++ мають третій аргумент, який надає середовище програми, інакше доступне через getenv у stdlib.h. Зверніться до програми C, щоб надрукувати змінні середовища, щоб дізнатися більше.

Властивості аргументів командного рядка в C

  1. Вони передаються до функції main().
  2. Це параметри/аргументи, які надаються програмі під час її виклику.
  3. Вони використовуються для керування програмами ззовні замість жорсткого кодування цих значень у коді.
  4. argv[argc] є покажчиком NULL.
  5. argv[0] містить назву програми.
  6. argv[1] вказує на перший аргумент командного рядка, а argv[argc-1] вказує на останній аргумент.

Примітка: Ви передаєте всі аргументи командного рядка, розділяючи їх пробілом, але якщо сам аргумент містить пробіл, ви можете передати такі аргументи, помістивши їх у подвійні або одинарні лапки.

приклад

Наведена нижче програма демонструє роботу аргументів командного рядка.

C




// C program to illustrate> // command line arguments> #include> int> main(>int> argc,>char>* argv[])> {> >printf>(>'Program name is: %s'>, argv[0]);> >if> (argc == 1)> >printf>(>' No Extra Command Line Argument Passed '> >'Other Than Program Name'>);> >if> (argc>= 2) {> >printf>(>' Number Of Arguments Passed: %d'>, argc);> >printf>(>' ----Following Are The Command Line '> >'Arguments Passed----'>);> >for> (>int> i = 0; i printf(' argv[%d]: %s', i, argv[i]); } return 0; }>

>

>

Вихід у різних сценаріях:

1. Без аргументів: Коли наведений вище код компілюється та виконується без передачі жодного аргументу, він створює наступний вихід.

Термінальний вхід

$ ./a.out>

Вихід

Program Name Is: ./a.out No Extra Command Line Argument Passed Other Than Program Name>

2. Три аргументи: Коли наведений вище код компілюється та виконується з трьома аргументами, він створює наступний вихід.

Термінальний вхід

$ ./a.out First Second Third>

Вихід

Program Name Is: ./a.out Number Of Arguments Passed: 4 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First argv[2]: Second argv[3]: Third>

3. Єдиний аргумент: Коли наведений вище код компілюється та виконується з одним аргументом, відокремленим пробілом, але в подвійних лапках, виводиться наступний результат.

Завантажити xvideoservicethief ubuntu 14.04

Термінальний вхід

$ ./a.out 'First Second Third'>

Вихід

Program Name Is: ./a.out Number Of Arguments Passed: 2 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First Second Third>

4. Один аргумент у лапках через пробіл: Коли наведений вище код компілюється та виконується з одним аргументом, розділеним пробілом, але в одинарних лапках, виводиться наступний результат.

Термінальний вхід

$ ./a.out 'First Second Third'>

Вихід

Program Name Is: ./a.out Number Of Arguments Passed: 2 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First Second Third>