🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.os.linux.programacion
3 messages
3 total messages Started by teoria Tue, 05 Sep 2006 18:52
getopt
#849
Author: teoria
Date: Tue, 05 Sep 2006 18:52
13 lines
1631 bytes
Hola. Queria que alguien me explicara como usar la funcion getopt para
la siguiente cosa:
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.
No se si me expliqué bien.
Por ahi con un ejemplo se me aclaran las cosas
Salu2
Re: getopt
#850
Author: 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/
Re: getopt
#852
Author: teoria
Date: Thu, 07 Sep 2006 06:04
5 lines
1440 bytes
Muchas gracias Oscar por el ejemplo.
Ahora entendi un poco más.
Mi problema si lleva dos argumentos.
Ahora me voy a poner a ver la pagina 3 del man.
Salu2
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads