Učíme se C (21. díl) - Parametry funkce main() - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se koná výstava fotografií Luďka Vojtěchovského?

V dnešní soutěži hrajeme o:



C/C++

Učíme se C (21. díl) - Parametry funkce main()

9. března 2001, 00.00 | Dnešní díl seriálu popisuje, jak se dá v C pracovat s parametry příkazové
řádky pomocí argumentů funkce main().

Parametry funkce main

Jak už víme, funkce main má mezi ostatními funkcemi v C výsadní postavení, neboť, kromě toho že musí být vždy definována, je automaticky spouštěna ihned po startu programu. Je sice možné volat ji i explicitně, nicméně to není zrovna nejvhodnější způsob. Navíc, v C++ již takovýto postup ani není dovolen.

Ačkoliv se to může zdát bezesmyslné, funkci main můžeme nadefinovat s parametry. O jejich naplnění se ale namísto programátora postará programový zavaděč operačního systému. Parametry funkce main se v C využívají pro získání argumentů, které byly našemu programu předány při jeho spuštění. Dá se říct, že pokud program reaguje na jemu předané parametry, je to obecně velmi užitečná vlastnost. Ne vždy je totiž interakce programu s uživatelem vítaná, neboť mnohé úkoly lze zpracovávat dávkově, a tedy mnohem rychleji. Chceme-li tedy v našich programech využít možnost práce s parametry příkazové řádky, definujeme hlavičku funkce main typicky takto:

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

Prvním parametrem je zde intová proměnná argc, která v sobě nese informaci o počtu parametrů. Druhý parametr argv pak představuje pole řetězců, ve kterých jsou tyto jednotlivé parametry uloženy (Ve skutečnosti je argv pole ukazatelů na řetězce, nicméně díky zaměnitelnosti ukazatele a pole se můžeme na parametr argv dívat i tímto jednodušším způsobem). Formální parametry funkce main se z historických důvodů pojmenovávají vždy právě jako argc a argv. Kromě samotných parametrů je v poli argv, jako jeho nultá položka, uložen i řetězec se jménem spouštěného programu. Hodnota parametru argc uvažuje i tento řetězec, a tak, pokud programu předáme například tři parametry, bude mít argc hodnotu 4.

Uvažujme, že máme funkci main nadefinovanou výše uvedeným způsobem, a přeložený program spustíme s dvěma parametry například takto:

program.exe pr1 pr2

Pak bude v proměnné argc uložena hodnota 3 a první tři položky pole budou obsahovat tyto řetězce (Znaky == jsou zde pouze symbolického významu, v C takto řetězce porovnávat nelze):

argv[0] == "program.exe"
argv[1] == "pr1"
argv[2] == "pr2"

Uvozovkami ohraničený parametr příkazové řádky představuje právě jeden argument, i když v něm jsou obsaženy mezery. Spusťme tedy náš program následujícím způsobem:

program.exe pr1 "pr2 pr3"

Z argc získáme opět hodnotu 3 a jednotlivé řetězce v argv budou vypadat takto:

argv[0] == "program.exe"
argv[1] == "pr1"
argv[2] == "pr2 pr3"

Jako příklad si vyzkoušíme jednoduchý program, který načte jemu předané parametry a spolu s údajem o jejich počtu je vypíše.

int main(int argc, char *argv[])
{ int i;
   printf("Pocet parametru: %d\n", argc);

  for (i=0; i<argc; i++)
    printf("argv[%d] == \"%s\"\n", i, argv[i]);

  return 0;
}

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » C/C++  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: