26. september 2003 - 21:42
Der er
24 kommentarer og 2 løsninger
give kommandoer i comandolinien
hvordan laver man et program som gikker i ens linie efter kommandolinien. f.eks: ./kommandofil -d kommando1 -f kommando2
Annonceindlæg fra DE-CIX
Slettet bruger
26. september 2003 - 21:45
#1
Med argv: #include <iostream> #include <stdlib.h> using namespace std; int main(int argc, char *argv[]) { cout << argv[1]; system("PAUSE"); return 0; }
26. september 2003 - 21:46
#2
program.exe hello world int main(int argc, char **argv){ //argv[0] -> program.exe //argv[1] -> hello //argv[2] -> world return 0; }
26. september 2003 - 21:47
#3
argv[0] indeholder path til programmet. argv[1] indeholder første parameter. f.eks. udskrives alle parametre sådan: for(int i=0;i<argc;i++) { cout << "param" << i << "\t" << argv[i] << endl; }
26. september 2003 - 21:47
#4
argc angiver hvor mange parametre som er givet
26. september 2003 - 21:52
#5
hvordan ser man så om det er angivningen (1, 2, 3, 4, 5...), eller angivelsestypen (-tal,-t)?
26. september 2003 - 21:58
#6
Du skal parse paramterene for at checkke at de er gyldige. F.eks. (mit eks.): main -t12345 -v3 -f foo -b Ar -bAr param[0] main param[1] -t12345 param[2] -v3 param[3] -f param[4] foo param[5] -b param[6] Ar param[7] -bAr Altså kan det være snedigt at anvende samme teknik som i 7'eren (for at undgå for meget arbejde..).
26. september 2003 - 22:04
#7
Jeg ved jeg har set et library der specifikt er lavet til at hjælpe med at holde styr på parametre. Jeg kan bare ikke finde det igen :-(
26. september 2003 - 22:06
#8
findes der ikke en måde at læse current param, og se om den indeholder et - også nogen text, så kan den fortælle at der vil komme en kommando efterfølgende af at mellemrum?
26. september 2003 - 22:14
#9
Librart til at parse -name value med er normalt kendt som getopt !
26. september 2003 - 22:15
#10
kan dette virke (er ikke så god til C/C++) for(int i=0;i<argc;i++) { if(argv[i] == "-d"){ i++; d = argv[i]; } if(argv[i] == "-f"){ i++; f = argv[i]; } }
26. september 2003 - 22:19
#11
1) Du kan ikke bruge argv[i] == "-d" men skal bruge strcmp(argv[i],"-d")==0. 2) Det går galt hvis man ikke angiver parametrene korrekt. Men ellsrs er det noget af den logik der skal til.
26. september 2003 - 22:22
#12
vil 0 være sand eller falsk?
26. september 2003 - 22:22
#13
0 = match
26. september 2003 - 22:27
#15
jeg er helt på grundplan angående det plan med libraries, hvad er det for noget... er det *.h filerne.. vis ja, så har jeg ikke en døjt forstand på dem, og kan jeg måske købe en bog om dem et sted?
26. september 2003 - 22:42
#16
Et library er typisk en .h fil og en .a fil, hvor du includer -h filen og linker mod .a filen.
26. september 2003 - 22:45
#17
altså skriver f.eks g++ test.cpp -o test -h minheadfil.a også finder den selv minheadfil.h?
26. september 2003 - 22:48
#18
Nej. #include "mylib.h" i din .cpp fil og build med: g++ test.cpp mylib.a -o test ["-h" var en tyrk-fejl jeg mente ".h"]
26. september 2003 - 22:51
#19
okay... hvor kan jeg læse om hvad de forskællige head filer gør, og hvordan jeg laver mine ejne?
26. september 2003 - 23:08
#20
Jeg kender ikke en god online tutorial til generel .h filer.
Standard .h filerne kan du læse om her:
http://www.cppreference.com/
27. september 2003 - 17:58
#21
jeg har lidt problemmer med at få mine verdier fra argv[] til int.. hvordan kan jeg gøre det. f.eks ./test -h 9 så skal argv[1] være char og argv[2] int
27. september 2003 - 18:01
#22
int h = 0; if(strcmp(argv[1],"-h")==0) { h = atoi(argv[2]); }
27. september 2003 - 18:04
#23
tak... skal du ikke have point for svarende?
27. september 2003 - 18:06
#24
Jo tak. (men der er jo også andre som har bidraget)
27. september 2003 - 18:09
#25
giver soreno 3 dage til at lave et svar så :) så deler jeg dem lige op
27. september 2003 - 18:11
#26
Så må jeg hellere skynde mig ! :-)
Kurser inden for grundlæggende programmering