elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  int main (int argc, char* argv[])
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: int main (int argc, char* argv[])  (Leído 3,103 veces)
Locura_23

Desconectado Desconectado

Mensajes: 162



Ver Perfil
int main (int argc, char* argv[])
« en: 23 Mayo 2021, 21:18 pm »

Para qué sirven exactamente estos argumentos en main ?


En línea

DtxdF

Desconectado Desconectado

Mensajes: 53



Ver Perfil
Re: int main (int argc, char* argv[])
« Respuesta #1 en: 23 Mayo 2021, 21:39 pm »

Hola @Locura_23

argc: Argument Count, que indica la cantidad de argumentos dados por la entidad que ejecutará este programa.
argv: Argument Vector, ya serían los argumentos proporcionados en sí, siendo una lista de cadenas.

Si, por ejemplo, tenemos el siguiente código:

main.c:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char **argv)
  5. {
  6.    char *arg;
  7.    while ((arg = *argv++))
  8.        puts(arg);
  9.  
  10.    return EXIT_SUCCESS;
  11.  
  12. }

Compilamos:

Código
  1. cc main.c -o main

Al ejecutarlo sin argumentos este programa, se mostrará en la salida del terminal el nombre del programa, que para este caso es main.c.

Código
  1. ./main
  2. # Salida:
  3. # ./main

Pero si ejecutaramos el programa con argumentos:

Código
  1. ./main "Primer argumento" "Segundo argumento" "Tercer argumento"
  2. # Salida:
  3. # ./main
  4. # Primer argumento
  5. # Segundo argumento
  6. # Tercer argumento

También si escribe un tercer argumento para la función main (llamémosle env), se mostrarán las variables de entorno.

~ DtxdF


« Última modificación: 23 Mayo 2021, 21:49 pm por DtxdF » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: int main (int argc, char* argv[])
« Respuesta #2 en: 23 Mayo 2021, 21:46 pm »

Un programa cuando se ejecuta puede recibir una serie de argumentos.
Esto se suele obviar porque normalmente ejecutamos los programas mediante un doble clic en el .exe.

Imagina que tienes tu programa en C/C++ y lo compilas. Ahora tienes como resultado tu ejecutable: programa.exe.
Para ejecutarlo puedes buscarlo y hacer doble clic o puedes acceder a la ruta mediante la Consola (cmd/Powershell de Windows) o Terminal (de Linux) mediante:
Código:
cd ruta_a_tu_ejecutable
Y ahora ejecutar el programa con o sin argumentos:
Código:
./programa.exe
./programa.exe cada palabra extra es un argumento
En el segundo caso "cada palabra extra es un argumento" son los argumentos que recibe el programa.
Para manejar estos argumentos en el propio programa están argc y argv:
- argc contiene el número de argumentos recibidos. Siempre es >= 1.
- argv es un array de char[] donde cada uno es una de las palabras
Código:
argc = 7
argv[0] = "./programa.exe"
argv[1] = "cada"
argv[2] = "palabra"
...
argv[6] = "argumento"
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Locura_23

Desconectado Desconectado

Mensajes: 162



Ver Perfil
Re: int main (int argc, char* argv[])
« Respuesta #3 en: 23 Mayo 2021, 22:50 pm »

Entiendo, muchas gracias por sus respuestas.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines