Main argumneter?

Tags:    c++

Hvad kan Mains argumenter bruges til?



10 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Hvad kan Mains argumenter bruges til?


Mains argumenter bruges til at læse kommandolinie-parametre. Hvis f.eks. du har lavet et program der hedder 'udregn', som kan udregne et regnestykke, kunne du lave det sådan at regnestykket skulle stå på kommandolinien efter programnavnet. (det er et eksempel fra en bog af Bjarne Stroustrup). F.eks.:

udregn 7+11*13

Noget af det første der sker er at funktionen main i dit program bliver kaldt.

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

Første argument 'argc' indeholder antallet af parametre på kommandolinien medregnet programnavnet (selvom det vel ikke kaldes en parameter?). I vores tilfælde er argc lig 2.

Andet argument er et array med parametrene. I vores tilfælde:
argv[0] er lig "udregn"
argv[1] er lig "7+11*13"

Hvad man ellers kan bruge kommandolinieparametre til, afhænger jo helt af hvad programmet skal kunne. Der er frit slag.

Hilsen Søren D



De er kommandolinjeparametre. argc er et heltal der fortæller hvor mange strings argv indeholder. argv[0] er navnet på programmet, og resten er så eventuelle kommandolinjeparametre.
--
Blog:
http://www.sigkill.dk/blog



Man skal være opmærksom på * og ? i argumenter til main.
gcc kompilere (mingw/cygwin/dev-cpp/etc) oversætter det til alle filer der matcher argumentet, f.ex:

Fold kodeboks ind/udKode 


Hvis jeg kompilerer ovenstående med mingw og kører det med *.cpp som argument vil programmet modtage navnet på alle .cpp filer i mappen som argument.

Det er desværre ikke let at omgå denne "fejl".
Man kan angive "*" som argument, og programmet vil se det som *



takker



Man skal være opmærksom på * og ? i argumenter til main.
Det er desværre ikke let at omgå denne "fejl".
Man kan angive "*" som argument, og programmet vil se det som *


Ups. Undskyld. God pointe. Tak for rettelsen. Man får også problemer med f.eks. '<' og '>' og sikkert mange andre tegn, afhængig af ens shell.
En god vane med et sådant 'udregn' program er nok at sætte hele regnestykket i " ".
Søren D



Hvad kan Mains argumenter bruges til?


Det behøves ikke nødvendigvis være kommandolinje argumenter.
På en linux maskine f.eks. vil du kunne lave en fork/exec og starte en ny process (et ny program) med diverse parametre, som så kan variere alt efter det kaldende programs state/kode/whatever.


\\"Whatever happened to sex, drugs and rock\\'n\\'roll?
Now we just have AIDS, crack and techno.\\"



Man skal være opmærksom på * og ? i argumenter til main.
gcc kompilere (mingw/cygwin/dev-cpp/etc) oversætter det til alle filer der matcher argumentet


Så vidt jeg husker sker den wildcard expansion i ens shell, og ikke i ens program. Når jeg kompilerer programmer med GCC, så får jeg i hvert fald ikke automatisk wildcard-matching med.
--
Blog:
http://www.sigkill.dk/blog



Man skal være opmærksom på * og ? i argumenter til main.
gcc kompilere (mingw/cygwin/dev-cpp/etc) oversætter det til alle filer der matcher argumentet


Så vidt jeg husker sker den wildcard expansion i ens shell, og ikke i ens program. Når jeg kompilerer programmer med GCC, så får jeg i hvert fald ikke automatisk wildcard-matching med.
--
Blog:
http://www.sigkill.dk/blog

Korrekt. Det er shell'en som expanderer '*' og '?'.



Min GCC på Windows ekspanderer * og ?

Copy & paste fra dos box:
Fold kodeboks ind/udKode 

Det er muligt at det er shell'en der ekspanderer * og ? på linux men på windows er det programmets startop kode, indsat af kompileren.
G++ er i dette tilfælde: g++ (GCC) 3.4.2 (mingw-special)



Det er muligt at det er shell'en der ekspanderer * og ? på linux men på windows er det programmets startop kode, indsat af kompileren.
G++ er i dette tilfælde: g++ (GCC) 3.4.2 (mingw-special)

I stand corrected



t