Argc és Argv C++

Argc Es Argv C



C++ programok írása közben mindannyian tudjuk, hogy a „main()” függvényt nagyon fontosnak tartjuk, hiszen nem tudjuk lefordítani programunkat, ha ennek a függvénynek a megvalósítása hiányzik. Csakúgy, mint a C++ többi függvénye, a „main()” függvény is képes argumentumokat fogadni. Az argumentumok „main()” függvénynek való átadása és a többi függvénynek való átadása között azonban az a különbség, hogy az előbbi esetben az argumentumokat a parancssorban kell átadni. Ez azért van így, mert maga a „main()” függvény a meghajtó függvény, ezért semmilyen más függvény nem képes meghívni és argumentumokat adni neki. Ebben a cikkben a „main()” függvény két paraméterét tárgyaljuk, azaz az „argc”-t és az „argv”-t a C++-ban az Ubuntu 20.04-ben.

Mi az Argc és Argv a C++-ban az Ubuntu 20.04-ben?

Az „argc” paraméter az argumentumszámra utal, míg az „argv” egy olyan karaktertömbre utal, amely tartalmazza az összes argumentumot, amely a „main()” függvénynek a parancssoron keresztül a program C++ nyelven való futtatásakor átadódik. Itt tudnia kell, hogy az „argc” mindig „1”-el nagyobb argumentumszámot mutat, mint az átadott argumentumok tényleges száma. Ez azért van így, mert az objektumfájl neve is parancssori argumentumnak számít. Bármely adattípushoz tartozó parancssori argumentumokat átadhatja a „main()” függvénynek. Csak arra kell ügyelnie, hogy ezek a paraméterek szerepeljenek a „main()” függvény prototípusában, ha azon belül szeretné elérni őket. A „main()” függvény azonban tökéletesen működik e két paraméter nélkül is. Erről a cikk következő szakaszában lesz szó, majd folytatjuk ennek a két paraméternek a használatát a C++ nyelven az Ubuntu 20.04-ben.

A fő funkció Argc és Argv nélkül C++-ban:

Először is szeretnénk elmondani, hogy a C++ „main()” függvénye az „argc” és „argv” paraméterek használata nélkül is tökéletesen működik. Ezt a következő C++ program mutatja be:









Ebben a programban van egy egyszerű „main()” függvényünk argumentumok nélkül. Ezen a „main()” függvényen belül csak egy mintaüzenetet nyomtatunk a terminálon.



Ezután az alábbi parancs segítségével összeállítottuk ezt az alap C++ programot:





$ g++ CommandLine.cpp –o CommandLine

Ezt követően a következő parancs futtatásával végrehajtottuk ezt a programot:



$ . / Parancs sor

Ennek az egyszerű C++ programnak a kimenete az alábbi képen látható:

C++ program futtatása parancssori argumentumok átadása nélkül:

Most megpróbálunk olyan C++ programot megvalósítani, amelyben a „main()” függvény képes elfogadni az „argc” és „argv” paramétereket, azonban ezeket az argumentumokat nem adjuk át neki, miközben ezt a programot a terminál. Az említett C++ program a következő képen látható:

Ebben a C++ programban a „main()” függvényünk képes „argc” és „argv” paraméterek elfogadására. Mivel azonban ebben a konkrét példában nem állt szándékunkban átadni neki ezeket az értékeket, szándékosan kiegyenlítettük az „argc”-t „0”-ra, így amikor megpróbáljuk kinyomtatni az értékét, ne adjon vissza semmiféle szemét értéket. Ezt követően a terminálra nyomtattuk az „argc” paraméter értékét. Ezután egy „for” ciklust használtunk az összes parancssori argumentum kinyomtatására a terminálon.

Ezt a kódot az alábbi paranccsal állítottuk össze:

$ g++ CommandLine.cpp –o CommandLine

Aztán amikor ezt a programot akartuk futtatni, nem adtunk át neki semmilyen parancssori argumentumot, amint az a következő parancsból látható:

$ . / Parancs sor

Ennek a C++ programnak az alábbi képen látható kimenetéből láthatja, hogy ennek a függvénynek nem adtak át parancssori argumentumot, ami miatt az argumentumok száma „0” volt, és a terminálon nem nyomtattak argumentumot, mert a karaktertömb „ argv” is üres volt.

C++ program futtatása egész típusú parancssori argumentumokkal:

Most ugyanazt a C++ programot szeretnénk futtatni úgy, hogy egész típusú parancssori argumentumokat adunk át neki. Mielőtt azonban ezt megtennénk, kissé módosítjuk a kódunkat, amint az a következő képen látható:

Az egyetlen módosítás, amit ezen a kódon hajtottunk végre, az az, hogy eltávolítottuk belőle az „argc=0” sort, mert ebben a példában a programnak futás közben átadott parancssori argumentumok tényleges számát akarjuk kinyomtatni. A kód többi része pontosan ugyanaz, mint a fenti szakaszban.

A módosított kódunkat az alábbi paranccsal újrafordítottuk:

$ g++ CommandLine.cpp –o CommandLine

Ezután a kód végrehajtásához a következő parancssori argumentumokat használtuk:

$ . / Parancs sor 1 két 3

Ez azt jelenti, hogy három egész típusú parancssori argumentumot adtunk át ennek a C++ programnak a futtatása során, azaz 1-et, 2-t és 3-at.

Ennek a módosított programnak a kimenete az alábbi képen látható:

A C++ program által visszaadott argumentumok teljes száma „4”, azaz három egész argumentum, amelyet átadtunk + az objektumfájl neve. Ez a program az „argv” karaktertömb elemeit is kinyomtatta a terminálon, vagyis a tényleges egész típusú argumentumokat, amelyek a programnak a végrehajtáskor átadásra kerültek a program nevével együtt.

C++ program futtatása karakter típusú parancssori argumentumokkal:

Most azt akartuk megnézni, hogy ugyanaz a C++ program jól működik-e, amikor megpróbáljuk végrehajtani úgy, hogy karakteres típusú parancssori argumentumokat adunk át neki. Ehhez nem kellett tovább módosítanunk. Csak karakteres típusú parancssori argumentumokkal kellett végrehajtanunk az alábbiak szerint:

$ . / Parancssor a b c d e f

Ez azt jelenti, hogy ennek a C++ programnak a futása közben hat karakteres parancssori argumentumokat adtunk át, azaz a, b, c, d, e és f.

Az alábbiakban látható az a kimenet, amely a karakter típusú parancssori argumentumok ugyanazon C++ programnak való átadása eredményeként jön létre:

A C++ program által visszaadott argumentumok teljes száma „7”, azaz hat karakterből álló argumentum, amelyet átadtunk + az objektumfájl neve. Ez a program az „argv” karaktertömb elemeit is kinyomtatta a terminálon, azaz a tényleges karaktertípus argumentumokat, amelyeket a végrehajtáskor a programnak adtak át, a program nevével együtt.

Következtetés:

Ez a cikk a „main()” függvény paramétereinek is nevezett két parancssori argumentum, azaz az „argc” és „argv” megvitatására irányult. Ennek a két paraméternek a jelentőségéről beszéltünk a használatuk ismertetésével. Ezután megosztottunk veled néhány példát, amelyek az „argc” és „argv” használatát mutatták be a C++ nyelven az Ubuntu 20.04-ben. Sőt, azt is tisztáztuk, hogy a „main()” függvény e paraméterek használata nélkül is tökéletesen működhet. Ezért, ha egyszer elolvassa ezt a cikket, nagyon világosan megérti az „argc” és „argv” használatát a C++ nyelven.