[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux] [devel] getopt()



On Sat, Jun 30, 2001 at 05:38:39PM +0200, CHARLIER Philippe wrote:
> Salut,
> 
> Autre petit probleme de comprehension :
> 
> Le prototype de la fonction "getopt()" est le suivant :
> 
> int getopt(int argc, char *const *argv, const char *optstring);
> 
> Mon probleme vient de l'utilisation des "const".  Je suppose que le but est 
> dans le troisieme argument de pointer vers une constante caractere.
> 
> Par contre dans le deuxieme argument, je vois les choses comme suit :
> 
> *argv est un pointeur "constant" vers un caractere.
> argv est un pointeur vers "un pointeur constant vers un caractere".

en fait, argc est le nombre d'arguments de ton prog,
argv les arguments (argv[0], argv[1], ...)
optstring est une chaine de caracteres avec les options que ton prog
peut accepter.

genre

int main(int argc, char *argv[])
{
	char *liste_opt = "abc";
	int nbe_opt;

	opterr = 0; // n'affiche pas les messages d'erreurs automatiquement

	while((nbe_opt = getopt(argc, argv, liste_opt)) != -1)
	{
		switch(nbe_opt)
		{
			case 'a':
				fprintf(stdout, "option a\n");
				break;
			case 'b':
				fprintf(stdout, "option b\n");
				break;
			case 'c':
				fprintf(stdout, "option c\n");
				break;
			case '?':
				fprintf(stderr, "option %c inconnue\n", optopt);
				break;
		}
	}
	if(optind != argc)
	{
		fprintf(stdout, "arguments restants : ");
		while(optind != argc)
			fprintf(stdout, "%s ", argv[optind++]);
	}

	return 0;
}
> 
> Me trompe-je ?
> 
> Philippe
> 
> [ Soyez précis dans vos sujets svp afin de déterminer directement  ]
> [ le type de demande...                                            ]
> [ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
> [ http://LinuxBe.org              Contact: listmaster@linuxbe.org  ]
---end quoted text---

-- 

<SomeLamer> what's the difference between chattr and chmod?
<SomeGuru> SomeLamer: man chattr > 1; man chmod > 2; diff -u 1 2 | less
        -- Seen on #linux on irc

Benjamin Michotte        <binny@baby-linux.net>
web      : http://www.baby-linux.net
homepage : http://www.baby-linux.net/binny
icq uin  : 99745024

[ Soyez précis dans vos sujets svp afin de déterminer directement  ]
[ le type de demande...                                            ]
[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
[ http://LinuxBe.org              Contact: listmaster@linuxbe.org  ]