Portál AbcLinuxu, 12. května 2025 06:33
./program -p arg1 arg2 arg3Na parsovani parametru/argumentu pouzivam getopt takto:
string arguments while ((c = getopt (argc, argv, "p:")) != -1) switch (c) { case 'p': arguments = optarg; break; }Do promenne arguments se mi vsak ulozi pouze prvni argument (arg1). Jakym zpusobem se mohu dostat k tem zbylym dvema?
./program -p arg1 -p arg2 -p arg3
./program -p arg1 -r arg2 -s arg3
./program arg1 arg2 arg3
if(argc == 4){ //ok char* p1 = argv[1]; char* p2 = argv[2]; char* p3 = argv[3]; }else{ …
./program -p arg1 arg2 arg3
./program -p "arg1;arg2;arg3"
optarg
rozdělit na středníku, pokud trváte na getopt a tom původním vstupu,
budete muset znásilňovat a zasahovat do proměnných
Podla mna je to "nezmysel", resp. nieco, co ide proti filozofii prepinacov v OS, a hlavne, kniznici getopt.
-p arg moze byt len jeden, ostatne hodnoty su mimo prepinaca -p.
Takze bud si napisete vlastny parser, za -p ocakavam 3 argumenty (ako vam uz bolo naznacene), alebo budete program volat v tvare -p "arg1 arg2 arg3", cim pomocou getopt dostanete retazec "arg1 arg2 arg3", ktory si vnutorne rozparsujete na pozadovane hodnoty. Dalsie sposoby: oddelovac argumentov nie je medzera, ale iny znak, napr. ciarka, potom program volate v tvare -p arg1,arg2,arg3 (bez medzier medzi , a argumentami). Opat sa nevyhnete vnutornemu parsingu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.