czwartek, 26 kwietnia 2018

Język C - Argumenty linii poleceń


C - Argumenty linii poleceń

Możliwe jest przekazywanie niektórych wartości z wiersza poleceń do programów C, gdy są wykonywane. Te wartości są nazywane argumentami wiersza poleceń i wiele razy są one ważne dla twojego programu, szczególnie gdy chcesz kontrolować swój program z zewnątrz zamiast twardego kodowania tych wartości wewnątrz kodu.
Argumenty wiersza poleceń są obsługiwane za pomocą argumentów funkcji main(), gdzie argc odnosi się do liczby przekazanych argumentów, a argv[] jest tablicą wskaźników, która wskazuje każdy argument przekazany do programu. Poniżej znajduje się prosty przykład, który sprawdza, czy jest podany dowolny argument z wiersza poleceń i podejmuje odpowiednie działania:
#include <stdio.h>

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

   if( argc == 2 ) {
      printf("Podany argument jest %s\n", argv[1]);
   } else if( argc > 2 ) {
      printf("Podano zbyt wiele argumentów.\n");
   } else {
      printf("Spodziewano się jednego argumentu.\n");
   }
}
Gdy powyższy kod jest kompilowany i wykonywany bez argumentu, generuje się następujący wynik.
$./a.exe
Spodziewano się jednego argumentu.
Kiedy powyższy kod zostanie skompilowany i wykonany z dwoma argumentami, wygeneruje się następujący wynik.
$./a.exe test1 test2
Podano zbyt wiele argumentów.
Należy zauważyć, że argv[0] zawiera nazwę samego programu, a argv[1] jest wskaźnikiem do pierwszego podanego argumentu wiersza poleceń, a * argv[n] jest ostatnim argumentem. Jeśli nie podano żadnych argumentów, argc będzie jednym, a jeśli przekażesz jeden argument, to argc ma wartość 2.
Przekazujesz wszystkie argumenty wiersza poleceń oddzielone spacją, ale jeśli sam argument ma spację, możesz przekazać takie argumenty umieszczając je w podwójnych cudzysłowach "" lub pojedynczych cudzysłowach ‘. Ponownie zapiszmy powyższy przykład, gdzie będziemy wyświetlać nazwę programu, a także przekazujemy argument wiersza poleceń, umieszczając go wewnątrz podwójnych cudzysłowów:
#include <stdio.h>

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

   printf("Nazwa programu %s\n", argv[0]);

   if( argc == 2 ) {
      printf("Podany argument jest %s\n", argv[1]);
   } else if( argc > 2 ) {
      printf("Podano zbyt wiele argumentów.\n");
   } else {
      printf("Spodziewano się jednego argumentu.\n");
   }
}
Kiedy powyższy kod jest kompilowany i wykonywany z pojedynczym argumentem oddzielonym spacją, ale wewnątrz podwójnych cudzysłowów, generuje się następujący wynik.
$./a.exe "test1 test2"

Nazwa programu ./a.exxe
Podany argument to test1 test2

Poprzednia strona                                                          Następna strona

Brak komentarzy:

Prześlij komentarz