sirve significa que por parametros para linea comandos c argv argc

significa - Con respecto a ''main(int argc, char*argv[])''



parametros por linea de comandos c (8)

Posibles duplicados:
¿Cuáles son los argumentos para main () para?
¿Qué significa int argc, char * argv []?

Todos los programas comienzan con la definición main(int argc, char *argv[]) .

No entiendo lo que significa. Me encantaría que alguien pudiera explicar por qué usamos estos argumentos si no los usamos en el programa. ¿Por qué no solo: int main() ?

¿El nombre del programa es uno de los elementos de *argv[] y argc es el recuento de la cantidad de argumentos en *argv[] ? ¿Cuáles son los otros argumentos enviados a *argv[] ? ¿Cómo los enviamos?


Con argc (conteo de argumentos) y argv (argumento vector) puede obtener el número y los valores de los argumentos pasados ​​cuando su aplicación ha sido iniciada.

De esta forma puede usar parámetros (como por ejemplo, " -version ) cuando su aplicación se comience a actuar de una manera diferente.

Pero también puedes usar int main(void) como prototipo en C.

Hay un tercer prototipo (menos conocido y no estándar) con un tercer argumento que es envp . Contiene variables de entorno.

Recursos:


Esos son para pasar argumentos a su programa, por ejemplo, desde la línea de comandos, cuando se invoca un programa

$ gcc mysort.c -o mysort $ mysort 2 8 9 1 4 5

Arriba, el mysort del programa se ejecuta con algunos parámetros de línea de comando. Dentro de main( int argc, char * argv[]) , esto daría como resultado

Argument Count, argc = 7

ya que hay 7 argumentos (contando el programa), y

Argument Vector, argv[] = { "mysort", "2", "8", "9", "1", "4", "5" };

El siguiente es un ejemplo completo.

$ cat mysort.c #include <stdio.h> int main( int argc, char * argv [] ) { printf( "argc = %d/n", argc ); for( int i = 0; i < argc; ++i ) { printf( "argv[ %d ] = %s/n", i, argv[ i ] ); } } $ gcc mysort.c -o mysort $ ./mysort 2 8 9 1 4 5 argc = 7 argv[ 0 ] = ./mysort argv[ 1 ] = 2 argv[ 2 ] = 8 argv[ 3 ] = 9 argv[ 4 ] = 1 argv[ 5 ] = 4 argv[ 6 ] = 5

[Las cadenas de caracteres "2", "8", etc. se pueden convertir a números usando alguna función de conversión de carácter a número, por ejemplo, atol() (link )]



Los argumentos argc y argv de main se usan como una forma de enviar argumentos a un programa, la forma más familiar posible es usar la buena terminal donde un usuario puede escribir el cat file . Aquí, la palabra cat es un programa que toma un archivo y lo envía a salida estándar ( stdout ).

El programa recibe el número de argumentos en argc y el vector de argumentos en argv , en el de arriba el argumento del argumento sería dos (el nombre del programa cuenta como el primer argumento) y el elemento del argumento contendría [ cat , file , nulo ] Mientras que el último elemento es un puntero nulo.

Comúnmente, lo escribirías así:

int // Specifies that type of variable the function returns. // main() must return an integer main ( int argc, char **argv ) { // code return 0; // Indicates that everything went well. }

Si su programa no requiere ningún argumento, es igualmente válido escribir una función main de la siguiente manera:

int main() { // code return 0; // Zero indicates success, while any // Non-Zero value indicates a failure/error }

En las primeras versiones del lenguaje C, no había ninguna int antes main ya que esto estaba implícito. Hoy, esto se considera un error.

En sistemas compatibles con POSIX (y Windows), existe la posibilidad de utilizar un tercer parámetro char **envp que contiene un vector de las variables de envio del programa. Existen otras variaciones de la lista de argumentos de la función main , pero no la detallaré aquí porque no es estándar.

Además, la denominación de las variables es una convención y no tiene un significado real. Siempre es una buena idea adherirse a esto para no confundir a los demás, pero sería igualmente válido definir main como

int main(int c, char **v, char **e) { // code return 0; }

Y para su segunda pregunta, hay varias formas de enviar argumentos a un programa. Te recomendaría que busques en la familia de funciones exec*() que es POSIX -standard, pero probablemente sea ​​más fácil simplemente usar system ("command arg1 arg2") , pero el uso de system() usualmente es mal visto como no se garantiza que funcione en todos los sistemas. No lo he probado yo mismo; pero si no hay bash , zsh u otro shell instalado en un * NIX-system, el system() fallará.


Puede ejecutar su aplicación con parámetros como app -something -somethingelse . int argc representa el número de estos parámetros y char *argv[] es una matriz con parámetros reales que se pasan a su aplicación. De esta manera puede trabajar con ellos dentro de su aplicación.


argc es el número de argumentos de línea de comando dados al programa en tiempo de ejecución, y argv es una matriz de matrices de caracteres (más bien, una matriz de C-strings) que contiene estos argumentos. Si sabe que no va a necesitar los argumentos de la línea de comando, puede declarar su principal al tomar un argumento de void , en su lugar:

int main(void) { /* ... */ }

Esos son los únicos dos prototipos definidos para main según los estándares, pero algunos compiladores también permiten un tipo de retorno de void . Más sobre esto en Wikipedia .


argc es el número de argumentos de la línea de comando y argv es una matriz de cadenas que representan los argumentos de la línea de comando.

Esto le da la opción de reaccionar a los argumentos pasados ​​al programa. Si no espera ninguno, también puede usar int main .


argc significa la cantidad de argumentos que se pasan al programa. char* argv[] son los argumentos pasados. argv[0] es siempre el nombre del programa en sí. No estoy 100% seguro, pero creo que int main() es válido en C / C ++.