[Powered by Google Translate] [Los argumentos de línea de comandos]
[Christopher Bartolomé - Harvard University]
[Esta es CS50 - CS50.TV]
Una característica útil para un programa es para aceptar la entrada del usuario.
Hasta el momento, hemos explorado algunas de las funciones dentro de la biblioteca CS50
para aceptar la entrada del usuario, tales como "cadena de conseguir,"
que indica al usuario, mientras la aplicación se está ejecutando, para una cadena.
>> Sin embargo, hay casos en los que desea proporcionar a su entrada de programa
antes de que realmente se está ejecutando.
De esta manera, no es necesario solicitar información adicional de su usuario
durante la ejecución de una tarea sencilla.
Tomemos, por ejemplo, el comando mv o calientes y UNIX.
Este comando permite al usuario mover un archivo desde una ubicación a otra.
De acuerdo a las páginas del manual, mv acepta dos argumentos de línea de comandos:
el archivo que se va a mover y la ubicación del archivo está siendo movido.
Así que este ejemplo tiene un comando con dos argumentos.
Entonces, ¿cómo le decimos a nuestro programa en C para utilizar estos argumentos de la línea de comandos?
>> Bueno, resulta que el principal, que se utiliza en todos los programas en C, tiene un secreto.
Principal acepta dos parámetros: argc y argv.
Vamos a repasar estos términos.
>> El primer parámetro, argc, que significa recuento de argumentos,
tiene un tipo de datos entero.
El parámetro argc contiene el número de argumentos, incluyendo el comando.
En nuestro comando de movimiento, aunque sólo se han mostrado dos argumentos,
valor de argc será de 3.
El segundo parámetro, argv, que significa vector argumento,
es una matriz de punteros char que apuntan a las cadenas.
>> Esto significa que cada elemento de argv, a partir de cero,
contiene el comando y los argumentos.
Por ejemplo, argv [0], la cual me referiré como argv cero,
siempre contendrá el comando que se está ejecutando -
en este caso, mv.
argv [1] contendrá el primer argumento, archivo.txt,
y argv [2] contendrá el segundo argumento, ~ / CS50 /.
El último argumento de argv siempre será nulo.
Así que vamos a poner en práctica estos argumentos de la línea de comandos.
En los ejercicios anteriores, colocamos vacío, es decir, nada, como parámetro principal.
Sin embargo, para que podamos utilizar los argumentos de línea de comandos,
tenemos que eliminar en el interior vacío y el lugar de principal argc int, char * argv [].
Ahora, para acceder a todo el elemento de argv, que son sus argumentos,
sólo tiene que repetir, o bucle, a través de la matriz de esta manera.
Así, en el interior del cuerpo principal, vamos a seguir adelante y escribir un bucle for:
for (int i = 0; i <argc; i + +).
>> No necesitamos una llave de cierre aquí porque estamos sólo ejecutando una línea de código
dentro del cuerpo de este bucle.
Vamos a seguir adelante y presione la tecla tab una vez,
a continuación, escriba printf ("argv [% d], para representar un valor entero,
es% s, para la cadena, el carácter de nueva línea.
A continuación le proporcionamos printf i en la iteración actual del bucle
y argv [i] para la representación de cadena de la corriente de línea de comandos argumento.
Cuando se ejecuta con dos argumentos, vamos a ver los argumentos que se muestran en el terminal.
Antes hemos dicho que el argv celebró una matriz de punteros char.
>> Por lo tanto, si este es el caso, ¿cómo podemos entonces tener acceso a caracteres individuales en cada argumento?
Por ejemplo, ¿qué pasa si yo quería buscar un carácter específico en el primer argumento?
Bueno, la respuesta es que tenemos que aplicar un bucle anidado
que entonces iterar a través de cada uno de los elementos de la cadena de argumentos.
Esta es la forma de hacerlo.
>> En primer lugar, vamos a hacer una copia de ejemplo2.c.
Luego, dentro del primer bucle,
vamos a añadir otro bucle for.
Así for (int j = 0, n = strlen (argv [i]),
que a su vez nos da la longitud de la discusión actual,
, J <n, j + +)
Vamos a imprimir la ubicación de cada personaje
dentro de la discusión actual utilizando printf.
Así, printf ("argv [% d], para representar el índice del argumento actual,
luego [% d] una vez más, para representar el carácter actual de la discusión actual,
es: c%, para el carácter actual del argumento.
Por último, proporcionamos printf con el índice del bucle exterior, i,
entonces el índice del bucle interno.
>> Y nuestro último argumento de printf es el carácter real del argumento siempre
en la línea de comandos.
Ahora, porque he utilizado la función de cadena strlen para obtener la longitud de una cadena,
También debo añadir la biblioteca string.h a la parte superior de nuestra incluye.
Así que, para hacer eso, vamos a ir para arriba, y un poco menos de stdio.h, que vamos a hacer
# Include .
>> Por lo tanto, vamos a compilar y ejecutar y dotarla de un argumento real.
>> Y, como podemos ver, ahora tenemos la situación exacta de cada individuo caracteres en el argumento.
Así que eso es todo. Soy Christopher Bartolomé, lo que es CS50.
[CS50.TV]