Forum » Programiranje » [c/c++]getopt option parsing
[c/c++]getopt option parsing
'FireSTORM' ::
rabim eno rahlo pomoč pri parsanju option-ov
iz "glavnega programa" kličem funkcijo get_options(int argc, char *argv)
ki zgleda takole:
longopts je pa static const struct ki zgleda takole:
in to je še OPTSTRING definition:
include je getopt.h
ni problema pri prevodu
prevede normalno
problem nastane pri zagonu programa
ko zaženem program z argumentom -h
dobim ta error:
option requires an argument -- h
*** glibc detected *** double free or corruption (out): 0xb7f68120 ***
Aborted
če pa zaženem program z argumentom --h ali --help
pa nadaljuje in zaključi normalno
kje sem ga kiksnil da ne sprejme -h argumenta sprejme samo --h?
saj ne samo za help ampak za vse tudi version naprimer deluje samo z --v ali --version
z -v pa ne deluje
iz "glavnega programa" kličem funkcijo get_options(int argc, char *argv)
ki zgleda takole:
int get_options(int argc, char *const argv[]) { int opt; while ((opt = getopt_long(argc, argv, OPTSTRING, longopts, NULL)) != EOF) { switch (opt) { case 'c': { break; } case 'h': { print_usage(); return (-1); } case 'u': { break; } case 'V': { break; } case 'v': { print_version(); return (-1); } } } return (0); }
longopts je pa static const struct ki zgleda takole:
static const struct option longopts[] = { {"create",required_argument,0, 'c'}, {"help",no_argument,0, 'h'}, {"userchange",required_argument,0, 'u'}, {"verbose",no_argument,0, 'V'}, {"version",no_argument,0, 'v'}, {NULL, 0, NULL, 0} };
in to je še OPTSTRING definition:
#define OPTSTRING "c:h:u:V:v:Vc"
include je getopt.h
ni problema pri prevodu
prevede normalno
problem nastane pri zagonu programa
ko zaženem program z argumentom -h
dobim ta error:
option requires an argument -- h
*** glibc detected *** double free or corruption (out): 0xb7f68120 ***
Aborted
če pa zaženem program z argumentom --h ali --help
pa nadaljuje in zaključi normalno
kje sem ga kiksnil da ne sprejme -h argumenta sprejme samo --h?
saj ne samo za help ampak za vse tudi version naprimer deluje samo z --v ali --version
z -v pa ne deluje
Those penguins.... They sure aint normal....
Jean-Paul ::
man 3 getopt (izsek):
optstring is a string containing the legitimate option characters. If such a character is followed by a colon, the option requires an argument, ...
Torej, optstring ni pravilen, glede na to, kar želiš ti. Še enkrat si natančno preberi man stran in ustrezno popravi.
LP
optstring is a string containing the legitimate option characters. If such a character is followed by a colon, the option requires an argument, ...
Torej, optstring ni pravilen, glede na to, kar želiš ti. Še enkrat si natančno preberi man stran in ustrezno popravi.
LP
'FireSTORM' ::
source sem skopiral in modificiral svojim potrebam iz oidentd 2.0.7
tako da je source pravilno napisan in bi moralo to delati kar jaz želim ker v oidentd 2.0.7 to dela normalno
ok sem že skapiral :D
in popravil :P
tako da je source pravilno napisan in bi moralo to delati kar jaz želim ker v oidentd 2.0.7 to dela normalno
ok sem že skapiral :D
in popravil :P
Those penguins.... They sure aint normal....
Zgodovina sprememb…
- spremenil: 'FireSTORM' ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [c] Enaki datotekiOddelek: Programiranje | 1032 (892) | Spura |
» | C strukture, kazalci naloga pomocOddelek: Programiranje | 1461 (1356) | DavidJ |
» | Pomoč z C++ nalogoOddelek: Programiranje | 1424 (1231) | denis123 |
» | C - pomočOddelek: Programiranje | 1450 (1190) | Thagirion |
» | [c++]malo pozabljene osnove ali drugačen način v linux?Oddelek: Programiranje | 1576 (1044) | 'FireSTORM' |