| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Wellingtom

Registrado: 19 Sep 2007 Mensajes: 17 Ubicación: venezuela
| Publicado: 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... 
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  _________________ o sea hello! |
| | Volver arriba | |  | _Martin_

Registrado: 03 Ago 2006 Mensajes: 150
| Publicado: 09/10/2007 4:01 am | | | Título: |
| Hola, uno habitualmente llama a un programa (por ejemplo "prog") desde la linea de comando asi:
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:
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
| Publicado: 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 | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |