/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

para que sirven estos argumentos? ( int argc, char *argv[] )

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Wellingtom



Registrado: 19 Sep 2007
Mensajes: 17
Ubicación: venezuela

MensajePublicado: 08/10/2007 4:19 pm
Título: para que sirven estos argumentos? ( int argc, char *argv[] )

( int argc, char *argv[] )

el capitulo del curso en donde explican esto, está notablemente incompleto,
sin embargo, logré entender que esos, son los argumentos que puede llevar la función main()

pero quisiera que alguien me aclarara, para que sirven dichos argumentos, para tener una idea mas clara... Rolling Eyes

argument count (int argc)
¿cuenta los argumentos? ¿que argumentos?

argument values (char *argv[] )
¿almacena parámetros?, ¿que parametros?;

muchas gracias, a aquellas personas que respondan, xD Wink
_________________
o sea hello!
Volver arriba
Yahoo Messenger
_Martin_



Registrado: 03 Ago 2006
Mensajes: 150

MensajePublicado: 09/10/2007 4:01 am
Título:

Hola, uno habitualmente llama a un programa (por ejemplo "prog") desde la linea de comando asi:
Código:

>>prog


En este caso, los parametros de la funcion main() tendran los siguientes valores:
Argc tendra el valor de 1
Argv[0] tendra el valor "prog"

y nada mas.

No obstante, uno le puede pasar datos de entrada al programa de la siguiente forma:

Código:

>>prog 5 6


En este caso, los parametros de la funcion main() tendran los siguientes valores:
Argc tendra el valor de 3
Argv[0] tendra el valor "prog"
Argv[1] tendra 5
Argv[2] tendra 6

Como ves, argc cuenta los parametros que le fueron pasados a prog, y los parametros pasados fueron guardados en argv

Saludos
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3588
Ubicación: Mexico

MensajePublicado: 09/10/2007 8:48 am
Título:

Solo para redondear el tema:

Cuando se desarrolla una aplicacion y no se esperan argumentos mediante la linea de comandos (o no se desea procesarlos) se define la funcion main de esta forma (y santo remedio):
Código:
int main(void)
{

   /* ... */

}


Ahora bien, si se esperan los mentados argumentos y se desea procesarlos la funcion main se debe definir de esta forma (o una equivalente):
Código:
int main(int argc, char **argv)
{

   /* ... */

}


Aqui argc es el numero de argumentos pasados mediante la linea de comandos (incluyendo la ruta al ejecutable) mientras que argv es un array de punteros donde cada uno apunta a un argumento (en la forma de una cadena de texto):
Código:
argv[0]        == ruta del ejecutable o NULL
argv[1]        == primer argumento
argv[2]        == segundo argumento
argv[3]        == tercer argumento

...

argv[argc - 1] == ultimo argumento
argv[argc]     == NULL


Si bien lo usual es tener la ruta al ejecutable en "argv[0]" esto no lo garantiza el estandar y bien pudiera ser NULL (aun cuando en la practica la posibilidad es pequeña, al menos en el mundo de las PCs de escritorio).

Esta lista puede procesarse mediante un contador en la forma usual o tambien mediante un puntero, un ejemplo (relativamente) sencillo que demuestra ambas formas es (C estandar):
Código:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{   
   int i;
   char **p;
   
   puts("Lista de argumentos (1):");
   for (i = 0; i <= argc; i++)
      printf(
         "argv[%d] == \"%s\"\n",
         i,
         argv[i] != NULL ? argv[i] : "NULL"
      );
   
   puts("----");
   
   puts("Lista de argumentos (2):");
   for (p = argv; p <= argv + argc; p++)
      printf(
         "argv[%ld] == \"%s\"\n",
         (long int) (p - argv),
         *p != NULL ? *p : "NULL"
      );
   
   return EXIT_SUCCESS;
}


Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com