Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

241
Vistas
Pasar parámetros a una función desde la línea de comandos de Bash

Estoy ejecutando un programa C++ desde la línea de comandos en Bash, que se encuentra en un entorno Linux. Tengo curiosidad por cómo pasas un parámetro desde la línea de comando. Aquí está mi programa:

 #include <iostream> using namespace std; int large_pow2( int n ); int main() { int value = 15; int largest_power = large_pow2(value); cout << "The highest power of 2 in " << value << " is " << large_power << "." << endl; return 0; } int large_pow2( int n ) { int i = n int j = i & (i - 1); while( j != 0) { i = j; j = i & (i - 1); } return j; }

Después de compilar el programa, quiero poder usar la línea de comando para pasar un número para usar como value . Por ejemplo, para ejecutar el programa, escriba ./"program_name" donde "program_name" es el nombre de mi programa sin comillas. ¿Hay alguna manera de establecer el value = n o algo así? Cuando ejecuto el programa, digamos que quiero que n sea 20 , así que en la línea de comando escribo algo como ./"program_name" 20 . Entonces el programa se ejecutaría con n = 20 . ¿Hay una manera de hacer eso? Soy completamente nuevo en un entorno Linux y Bash, por lo que aún no sé cómo hacer las cosas en él.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Use argc y argv en int main(int argc, char *argv[]) y modifique su código en consecuencia.

Los argumentos argc el número de argumentos pasados a su programa desde la CLI y siempre es >=1. Cuando 1 es el nombre del programa. Entonces argc[0] es el nombre del programa.

argv contiene los argumentos de la línea de comando, además del nombre del programa, y siempre es una cadena de caracteres. Por lo tanto, debemos usar un convertidor apropiado como atoi , si no desea una cadena.

Por lo tanto, su código se verá como si la verificación de errores no se realizara por simplicidad

 int main(int argc, char *argv[]) { //Now we expect argc ==2, program value, This will when argc != 2 // We should use if in real scenario assert(argc == 2); int value = atoi(argv[1]) int largest_power = large_pow2(value); cout << "The highest power of 2 in " << value << " is " << large_power << "." << endl; return 0; }
over 4 years ago · Santiago Trujillo Denunciar

0

Su método principal puede tomar (int argc, char** argv) que son el recuento de argumentos y los argumentos terminados en NUL. La ruta del programa es argv[0], por lo que probablemente lo que desee sea atoi(argv[1]). Compruebe argc ==2.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda