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 | 1153 (1013) | Spura |
| » | C strukture, kazalci naloga pomocOddelek: Programiranje | 1582 (1477) | DavidJ |
| » | Pomoč z C++ nalogoOddelek: Programiranje | 1578 (1385) | denis123 |
| » | C - pomočOddelek: Programiranje | 1557 (1297) | Thagirion |
| » | [c++]malo pozabljene osnove ali drugačen način v linux?Oddelek: Programiranje | 1680 (1148) | 'FireSTORM' |