[Powered by Google Translate] [Kmand-Line argumenti]
[Christopher Bartholomew - Università ta 'Harvard]
[Dan huwa CS50 - CS50.TV]
Karatteristika utli għal programm huwa li jaċċetta input utent.
S'issa, aħna ve esplorati xi funzjonijiet fi ħdan l-librerija CS50
li taċċetta input utent, bħal "nikseb string,"
li tinkoraġġixxi l-utent, filwaqt li l-applikazzjoni tkun qed taħdem, għal string.
>> Madankollu, hemm każijiet fejn inti tixtieq li jipprovdu input program tiegħek
qabel ma attwalment taħdem.
Dan il-mod, inti m'għandekx bżonn li tintalab informazzjoni addizzjonali mill-utent tiegħek
filwaqt li jesegwixxi xogħol sempliċi.
Ħu, per eżempju, l-mv jew kmand jiċċaqalqu fil UNIX.
Dan il-kmand jippermetti lill-utent biex jimxu fajl minn post għall-ieħor.
Skond il-paġni manwali, mv taċċetta żewġ argumenti kmand tal-linja:
il-fajl li qed jiġi mċaqlaq u l-post l-fajl qiegħed jiġi mċaqlaq għal.
Allura dan l-eżempju għandu kmand ma 'żewġ argumenti.
Allura kif nistgħu tell-programm C tagħna biex tutilizza dawn l-argumenti kmand tal-linja?
>> Ukoll, jirriżulta li prinċipali, li nużaw fil-programmi Ċ, għandha sigriet.
Main taċċetta żewġ parametri: argc u ARGV.
Ejja jmorru fuq dawn it-termini.
>> Il-parametru 1, argc, li stands għall-għadd argument,
għandu tip ta 'dejta ta' numru sħiħ.
Il-parametru argc fih in-numru ta 'argumenti, inkluż il-kmand.
Fl-kmand jiċċaqalqu tagħna, għalkemm aħna biss għandna żewġ argumenti murija,
valur argc se jkun 3.
It-tieni parametru, ARGV, li stands għall vector argument,
huwa firxa ta 'indikaturi char li jindikaw kordi.
>> Dan ifisser li kull element fil ARGV, li jibda minn żero,
fih il-kmand u l-argumenti.
Per eżempju, ARGV [0], li jien ser nirreferi għalih bħala ARGV żero,
dejjem se jkun fiha l-kmand li qed titmexxa -
f'dan il-każ, mv.
ARGV [1] għandu jkun fiha l-argument, file.txt 1,
u ARGV [2] għandu jkun fiha t-tieni argument, ~ / cs50 /.
L-aħħar argument tal ARGV dejjem se jkun null.
Mela ejja jimplimentaw dawn l-argumenti kmand tal-linja.
Fil eżerċizzji preċedenti, aħna mqiegħda null, jiġifieri xejn, bħala parametru ewlieni tal-.
Madankollu, sabiex għalina biex jużaw kmand tal-linja l-argumenti,
għandna bżonn li jitneħħew null u l-post ġewwa tal int prinċipali argc, char * ARGV [].
Issa, għall-aċċess għall-element kollu mill ARGV, li huma argumenti tiegħek,
inti tista 'sempliċement jtenni, jew loop, permezz tal-firxa bħal din.
Għalhekk, ġewwa ta 'korp ewlieni, aħna qed tmur biex jimxi' l quddiem u t-tip ta 'għal loop:
għal (i int = 0; i <argc; i + +).
>> M'għandniex bżonn Brace kaboċċi hawnhekk għaliex aħna qed biss eżekuzzjoni linja waħda tal-kodiċi
fi ħdan il-korp ta 'dan loop.
Aħna ser imorru quddiem u hit tab darba,
imbagħad it-tip printf ("ARGV [% d], li jirrappreżentaw valur sħiħ,
huwa% s, għal string, allura l-karattru linja ġdida.
Imbagħad aħna nipprovdu printf i għall-iterazzjoni attwali tal-linja
u ARGV [i] għar-rappreżentazzjoni sekwenza tal-kurrent kmand tal-linja argument.
Meta aħna run ma 'żewġ argumenti, aħna ser tara l-argumenti li qed jintwerew fit-terminal.
Earlier għidna li l-ARGV miżmuma firxa ta 'indikaturi char.
>> Allura, jekk dan huwa l-każ, kif nistgħu mbagħad ikollhom aċċess għal karattri individwali f'kull argument?
Per eżempju, dak li jekk jien ridt li tfittex għal karattru speċifiku fl-ewwel argument?
Ukoll, it-tweġiba hija li għandna bżonn li tapplika loop nested
li mbagħad jtenni permezz kull wieħed mill-elementi fil-sekwenza argument.
Din hija kif inti tagħmel dan.
>> L-ewwel, aħna qed tmur biex tagħmel kopja ta 'example2.c.
Imbagħad, ġewwa tal-ewwel linja,
aħna qed tmur biex iżidu addizzjonali għall loop.
Allura għal (j int = 0, n = strlen (ARGV [i]),
li mbagħad jagħtina t-tul tal-argument preżenti,
; J <n; j + +)
Aħna ser jistampaw il-post ta 'kull karattru
ġewwa tal-argument attwali bl-użu printf.
Allura, printf ("ARGV [% d], li jirrappreżenta l-indiċi ta 'l-argument preżenti,
imbagħad [% d] għal darb'oħra, biex jirrappreżentaw il-karattru attwali tal-argument preżenti,
huwa: c%, għall-karattru attwali fil-argument.
Fl-aħħar nett, aħna nipprovdu printf mal-indiċi tal-linja ta 'barra, i,
allura l-indiċi tal-linja ta 'ġewwa.
>> U l-aħħar argument tagħna li printf huwa l-karattru attwali mill-argument pprovduta
fil-linja tal-kmand.
Issa, minħabba I użat il-funzjoni sekwenza strlen biex jiksbu l-tul ta 'spag,
I għandhom ukoll iżidu l-librerija string.h għall-quċċata tal tinkludi tagħna.
Allura, biex tagħmel dan, aħna ser jitla ', u biss taħt stdio.h, aħna qed tmur biex tagħmel
# Jinkludu .
>> Allura, ejja jikkompilaw u run u jipprovdiha argument attwali.
>> U, kif nistgħu naraw, issa għandna l-post eżatt ta 'kull char individwali fil-argument.
Allura dak li. Jien Christopher Bartholomew; dan huwa CS50.
[CS50.TV]