🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #850

Re: getopt

#850
From: Oscar Garcia
Date: Tue, 05 Sep 2006 19:23
64 lines
2833 bytes
On 5 Sep 2006 11:52:23 -0700, "teoria" <teoriaderedes@gmail.com>
wrote:
>quiero ejecutar un programa y pasarle dos parametros y luego tener esos
>parametros como int
>Ejemplo:
>$ ./ejemplo -s 2  5
>y luego poder usar el 2 y el 5 para que mi programa con esos numeros
>haga algo que yo le especifique. Algo lei que hay una variable que se
>llama optarg que apunta al primer valor, pero no entend� bien como se
>usa.

Lo que no entiendo es si la opci�n -s tiene como par�metro un n�mero o
dos. Si tiene dos n�meros como par�metros te recomiendo que dividas el
argumento en dos, ya que getopt no permite usar dos par�metros para
una opci�n.

En caso de que -s vaya por separado entonces no debes preocuparte por
los n�meros ya que se te quedar�n disponibles como argumentos usando
argv y argc como antiguamente.

>No se si me expliqu� bien.

Le falta algo :)

>Por ahi con un ejemplo se me aclaran las cosas

Tienes un ejemplo muy claro en:
man 3 getopt

Si a�n y as� no lo pillas te intento explicar un poco como va.

Argumentos:
-h: ayuda
-n: escribe el n�mero entero multiplicado por dos.

while ((opcion = getopt_long (argc, argv, "hn:")) != -1) {
  switch (opcion) {
  case 'h':
    // Muestro la ayuda
    break;
  case 'n':
    numero = atoi (optarg);
    introducido = true;
    break;
  default:
    // Falta alg�n argumento o se ha introducido uno inexistente
    // Dar un error y mostrar la ayuda seria de ayuda
    // opcionalmente se puede salir del programa
  }
}
if (introducido) {
  printf ("Doble: $d\n", numero * 2);
} else {
  // mostrar un error diciendo que no hemos introducido el numero
}

>Salu2

Saludos.

-- 
�scar Javier Garc�a Baudet
LinaresDigital
http://redstar.linaresdigital.com/
Technical Details
Message-ID: <hqirf2lc42skv1ug9jdjvvuspkn6k67ad4@4ax.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!border1.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!peer01.cox.net!cox.net!antonio.escomposlinux.org!cernicalo.escomposlinux.org!escomposlinux.org!not-for-mail
References: <1157482343.807391.243220@m79g2000cwm.googlegroups.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,f16c2fb068825204
X-Google-Attributes: gidf86c8,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!border1.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!peer01.cox.net!cox.net!antonio.escomposlinux.org!cernicalo.escomposlinux.org!escomposlinux.org!not-for-mail
From: Oscar Garcia <redstarQUITARSPAM23@terra.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: getopt
Date: Tue, 05 Sep 2006 21:23:28 +0200
Organization: Ecolnet
Lines: 64
Message-ID: <hqirf2lc42skv1ug9jdjvvuspkn6k67ad4@4ax.com>
References: <1157482343.807391.243220@m79g2000cwm.googlegroups.com>
NNTP-Posting-Host: 87.217.171.192
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: cormoran.emeteo.local 1157484201 27402 87.217.171.192 (5 Sep 2006 19:23:21 GMT)
X-Complaints-To: emeteo@escomposlinux.org
NNTP-Posting-Date: Tue, 5 Sep 2006 19:23:21 +0000 (UTC)
X-Newsreader: Forte Free Agent 3.3/32.846