[Powered by Google Translate] [Command-Line Viðföng]
[Christopher Bartholomew - Harvard University]
[Þetta er CS50 - CS50.TV]
A gagnlegur lögun fyrir a program er að samþykkja notandi inntak.
Svo langt, höfum við kannað nokkrar aðgerðir innan CS50 bókasafn
að samþykkja notandi inntak, eins og "að fá band,"
sem hvetja notandann, á meðan umsókn er í gangi, að streng.
>> Hins vegar eru tilvik þar sem þú vilt að veita program inntak þinn
áður en það er í raun í gangi.
This vegur, þú þarft ekki að biðja frekari upplýsingar frá notanda þinni
meðan framkvæmd einfalda verkefni.
Taka, til dæmis, MV eða færa stjórn í UNIX.
Þessi skipun gerir notandanum kleift að færa skrá frá einum stað til annars.
Samkvæmt handbók síður, MV tekur tvær stjórn lína rifrildi:
skrána sem verið er að flytja og staðsetningu skrá er flutt.
Þannig hefur þetta dæmi skipun með tveimur rök.
Svo hvernig segja við C kerfi okkar til að nýta þessar stjórn-lína rök?
>> Jæja, kemur í ljós að helstu, sem við notum í öllum C forrit, hefur leyndarmál.
Main tekur tvær breytur: argc og argv.
Við skulum fara yfir þessi hugtök.
>> Fyrsta breytu, argc, sem stendur fyrir fjölda rifrildi,
hefur gögn tegund heil tala.
The argc breytu inniheldur fjölda rökum, þar á meðal stjórn.
Í stjórn hreyfingu, þótt við aðeins hafa tvær rök sýna,
gildi argc verður 3.
Annað breytu, argv, sem stendur fyrir vektor rifrildi,
er fylki á bleikju ábendingum sem benda á strengi.
>> Þetta þýðir að hver þáttur í argv, frá núlli,
inniheldur skipunina og röksemdir.
Til dæmis, argv [0], sem ég vísa til sem argv núll,
mun alltaf vera stjórn sem verið er að keyra -
í þessu tilfelli, MV.
argv [1] mun innihalda fyrsta rifrildi, file.txt,
og argv [2] mun innihalda seinni rök, ~ / cs50 /.
Síðustu rök argv mun alltaf vera null.
Svo skulum koma þessum stjórn-lína rök.
Í fyrri æfingar, sett við tóm, þýðir að ekkert, sem breytu aðal.
En í röð fyrir okkur til að nota stjórn-lína rök,
við þurfum að fjarlægja ógilt og stað inni í helstu int argc, char * argv [].
Nú, til að fá aðgang að öllum þáttur frá argv, sem eru rök þín,
þú getur einfaldlega iterate eða lykkja í gegnum array svona.
Svo inni í líkama aðal, þá ætlum við að fara á undan og slá a for lykkju:
fyrir (INT i = 0, i <argc, i + +).
>> Við þurfum ekki hrokkið Brace hér því að við erum aðeins að framkvæma eina línu af kóða
í líkamanum þessa lykkju.
Við munum fara á undan og högg flipann einu sinni,
þá tegund printf ("argv [% d], til að tákna integer,
er% s, í band, þá nýja línu staf.
Þá bjóðum við printf i fyrir núverandi endurtekning á lykkju
og argv [i] fyrir band framsetning núverandi stjórn-lína rök.
Þegar við hlaupum það með tveimur rökum munum við sjá rök sem birtist í flugstöðinni.
Fyrr við sagði að argv haldið fjölda af bleikju ábendingum.
>> Svo ef þetta er raunin, hvernig við aðgang þá einstaka stafi í hverju rifrildi?
Til dæmis, hvað ef ég vildi að leita að sérstökum karakter í fyrsta rifrildi?
Jæja, svarið er að við þurfum að beita hreiður lykkju
sem mun þá iterate gegnum hvert atriði í rifrildi band.
Þetta er hvernig þú gerir það.
>> Í fyrsta lagi erum við að fara að gera afrit af example2.c.
Þá, inni fyrst fyrir lykkju,
við erum að fara að bæta við í lykkju.
Svo fyrir (int j = 0, n = strlen (argv [i]),
sem gefur svo okkur lengd núverandi rök,
, J <N, j + +)
Við erum að fara að prenta staðsetningu hvern staf
inni af núverandi rök með printf.
Svo, printf ("argv [% d], til að tákna vísitölu núverandi rök,
þá [% d] aftur, til að tákna núverandi eðli núverandi rök,
er:% c, fyrir núverandi staf í rifrildi.
Loks gefum printf með vísitölu ytri lykkju, i
þá vísitölu innri lykkju.
>> Og síðast rök okkar til printf er raunverulegt eðli frá rifrildi enda
á stjórn lína.
Nú, vegna þess að ég notaði band virka strlen að fá lengd band,
Ég þarf einnig að bæta string.h bókasafn til the toppur af nær okkar.
Svo, til að gera það, við förum upp, og tæplega stdio.h, við erum að fara að gera
# Include .
>> Svo, við skulum taka saman og hlaupa og gefa það í raun rök.
>> Og, eins og við getum séð, höfum við nú nákvæma staðsetningu hvers bleikju í rifrildi.
Svo er það það. Ég er Christopher Bartholomew, þetta er CS50.
[CS50.TV]