» »

[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:
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

'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
Those penguins.... They sure aint normal....

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c] Enaki datoteki

Oddelek: Programiranje
71032 (892) Spura
»

C strukture, kazalci naloga pomoc

Oddelek: Programiranje
51461 (1356) DavidJ
»

Pomoč z C++ nalogo

Oddelek: Programiranje
101424 (1231) denis123
»

C - pomoč

Oddelek: Programiranje
111450 (1190) Thagirion
»

[c++]malo pozabljene osnove ali drugačen način v linux?

Oddelek: Programiranje
241576 (1044) 'FireSTORM'

Več podobnih tem