logo

Argumenty wiersza poleceń w C

Najważniejszą funkcją C jest funkcja main(). Jest on najczęściej definiowany ze zwracanym typem int i bez parametrów.

int main() { ... }>

Argumenty wiersza poleceń możemy podać także w języku C. Argumenty wiersza poleceń to wartości podane po nazwie programu w powłoce wiersza poleceń systemów operacyjnych. Argumenty wiersza poleceń są obsługiwane przez funkcję main() programu C.



Aby przekazać argumenty wiersza poleceń, zazwyczaj definiujemy funkcję main() z dwoma argumentami: pierwszym argumentem jest liczba argumentów wiersza poleceń a drugie to A lista argumentów wiersza poleceń.

wykres alokacji zasobów

Składnia

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

Tutaj,

    argc (liczba ARGumentów) to zmienna całkowita przechowująca liczbę argumentów wiersza poleceń przekazanych przez użytkownika, w tym nazwę programu. Jeśli więc przekażemy wartość do programu, wartość argc będzie wynosić 2 (jeden dla argumentu i jeden dla nazwy programu)
  • Wartość argc powinna być nieujemna.
  • argv (wektor ARGument) to tablica wskaźników znakowych wymieniająca wszystkie argumenty.
  • Jeśli argc jest większe od zera, elementy tablicy od argv[0] do argv[argc-1] będą zawierać wskaźniki do łańcuchów.
  • argv[0] to nazwa programu. Następnie aż do argv[argc-1] każdy element jest argumentem wiersza poleceń.

Aby lepiej zrozumieć, uruchom ten kod na komputerze z systemem Linux.



Przykład

Poniższy przykład ilustruje drukowanie argumentów wiersza poleceń.

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; }>

>

>

Wyjście

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

dla wejścia terminala

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

Notatka: Inne formaty zależne od platformy są również dozwolone w standardach C; na przykład Unix (choć nie POSIX.1) i Microsoft Visual C++ mają trzeci argument określający środowisko programu, w przeciwnym razie dostępny poprzez getenv w stdlib.h. Aby uzyskać szczegółowe informacje, zobacz program C, aby wydrukować zmienne środowiskowe.

Właściwości argumentów wiersza poleceń w C

  1. Są one przekazywane do funkcji main().
  2. Są to parametry/argumenty dostarczane do programu podczas jego wywoływania.
  3. Służą do kontrolowania programów z zewnątrz, zamiast kodowania tych wartości na stałe w kodzie.
  4. argv[argc] jest wskaźnikiem NULL.
  5. argv[0] zawiera nazwę programu.
  6. argv[1] wskazuje na pierwszy argument wiersza poleceń, a argv[argc-1] wskazuje na ostatni argument.

Notatka: Wszystkie argumenty wiersza poleceń przekazujesz oddzielone spacją, ale jeśli sam argument zawiera spację, możesz przekazać takie argumenty, umieszczając je w cudzysłowie podwójnym lub pojedynczym.

Przykład

Poniższy program demonstruje działanie argumentów wiersza poleceń.

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; }>

>

>

Dane wyjściowe w różnych scenariuszach:

1. Bez argumentu: Kiedy powyższy kod jest kompilowany i wykonywany bez przekazywania żadnego argumentu, generuje następujące dane wyjściowe.

Hasext Java

Wejście terminala

$ ./a.out>

Wyjście

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

2. Trzy argumenty: Gdy powyższy kod zostanie skompilowany i wykonany z trzema argumentami, wyświetli się następujący wynik.

Wejście terminala

$ ./a.out First Second Third>

Wyjście

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. Pojedynczy argument: Gdy powyższy kod zostanie skompilowany i wykonany z pojedynczym argumentem oddzielonym spacją, ale umieszczonym w podwójnym cudzysłowie, wyświetli się następujący wynik.

Wejście terminala

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

Wyjście

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. Pojedynczy argument w cudzysłowie oddzielony spacją: Gdy powyższy kod zostanie skompilowany i wykonany z pojedynczym argumentem oddzielonym spacją, ale umieszczonym w pojedynczych cudzysłowach, wyświetli się następujący wynik.

Wejście terminala

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

Wyjście

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>