[Powered by Google Translate] [Els arguments de línia de comandes]
[Christopher Bartolomé - Harvard University]
[Aquesta és CS50 - CS50.TV]
Una característica útil per a un programa és per acceptar l'entrada de l'usuari.
Fins ara, hem explorat algunes de les funcions dins de la biblioteca CS50
per acceptar l'entrada de l'usuari, com ara "cadena d'aconseguir,"
que indica a l'usuari, mentre l'aplicació s'està executant, per a una cadena.
>> No obstant això, hi ha casos en que desitja proporcionar a la seva entrada de programa
abans que realment s'està executant.
D'aquesta manera, no és necessari sol · licitar informació addicional del seu usuari
durant l'execució d'una tasca senzilla.
Prenguem, per exemple, l'ordre mv o calents i UNIX.
Aquesta comanda permet a l'usuari moure un arxiu des d'una ubicació a una altra.
D'acord a les pàgines del manual, mv accepta dos arguments de línia de comandes:
l'arxiu que es va a moure i la ubicació del fitxer està sent mogut.
Així que aquest exemple té una ordre amb dos arguments.
Llavors, ¿com li diem al nostre programa en C per utilitzar aquests arguments de la línia de comandaments?
>> Bé, resulta que el principal, que s'utilitza en tots els programes en C, té un secret.
Inici accepta dos paràmetres: argc i argv.
Anem a repassar aquests termes.
>> El primer paràmetre, argc, que significa recompte d'arguments,
té un tipus de dades sencer.
El paràmetre argc conté el nombre d'arguments, incloent la comanda.
En el nostre ordre de moviment, encara que només s'han mostrat dos arguments,
valor de argc serà de 3.
El segon paràmetre, argv, que significa vector argument,
és una matriu de punters char que apunten a les cadenes.
>> Això significa que cada element de argv, a partir de zero,
conté la comanda i els arguments.
Per exemple, argv [0], la qual faré referència com argv zero,
sempre contindrà la comanda que s'està executant -
en aquest cas, mv.
argv [1] contindrà el primer argument, fitxer.txt,
i argv [2] contindrà el segon argument, ~ / CS50 /.
L'últim argument de argv sempre serà nul.
Així que anem a posar en pràctica aquests arguments de la línia d'ordres.
En els exercicis anteriors, col · loquem buit, és a dir, res, com a paràmetre principal.
No obstant això, perquè puguem utilitzar els arguments de línia de comandes,
hem d'eliminar a l'interior buit i el lloc de principal argc int, char * argv [].
Ara, per accedir a tot l'element de argv, que són els seus arguments,
simplement repetiu, o bucle, a través de la matriu d'aquesta manera.
Així, a l'interior del cos principal, seguirem endavant i escriure un bucle for:
for (int i = 0; i <argc; i + +).
>> No necessitem una clau de tancament aquí perquè estem només executant una línia de codi
dins del cos d'aquest bucle.
Seguirem endavant i premeu la tecla tab un cop,
a continuació, escriviu printf ("argv [% d], per representar un valor sencer,
és% s, per a la cadena, el caràcter de nova línia.
A continuació posem a printf ia la iteració actual del bucle
i argv [i] per a la representació de cadena del corrent de línia d'ordres argument.
Quan s'executa amb dos arguments, anem a veure els arguments que es mostren en el terminal.
Abans hem dit que el argv celebrar una matriu de punters char.
>> Per tant, si aquest és el cas, com podem llavors tenir accés a caràcters individuals a cada argument?
Per exemple, què passa si jo volia buscar un caràcter específic al primer argument?
Bé, la resposta és que hem d'aplicar un bucle niat
que llavors iterar a través de cada un dels elements de la cadena d'arguments.
Aquesta és la forma de fer-ho.
>> En primer lloc, farem una còpia de ejemplo2.c.
Després, dins el primer bucle,
anem a afegir un altre bucle for.
Així for (int j = 0, n = strlen (argv [i]),
que al seu torn ens dóna la longitud de la discussió actual,
, J <n, j + +)
Anem a imprimir la ubicació de cada personatge
dins de la discussió actual utilitzant printf.
Així, printf ("argv [% d], per representar l'índex de l'argument actual,
després [% d] un cop més, per representar el caràcter actual de la discussió actual,
és: c%, per al caràcter actual de l'argument.
Finalment, proporcionem printf amb l'índex del bucle exterior, i,
llavors l'índex del bucle intern.
>> I el nostre últim argument de printf és el caràcter real de l'argument sempre
en la línia d'ordres.
Ara, perquè he utilitzat la funció de cadena strlen per obtenir la longitud d'una cadena,
També he d'afegir la biblioteca string.h a la part superior de la nostra inclou.
Així que, per fer això, anirem cap amunt, i una mica menys de stdio.h, que farem
# Include .
>> Per tant, anem a compilar i executar i dotar-la d'un argument real.
>> I, com podem veure, ara tenim la situació exacta de cada individu caràcters en l'argument.
Així que això és tot. Sóc Christopher Bartolomé, el que és CS50.
[CS50.TV]