1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Command-Line Viðföng] 2 00:00:02,000 --> 00:00:04,000 [Christopher Bartholomew - Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Þetta er CS50 - CS50.TV] 4 00:00:07,000 --> 00:00:11,000 A gagnlegur lögun fyrir a program er að samþykkja notandi inntak. 5 00:00:11,000 --> 00:00:15,000 Svo langt, höfum við kannað nokkrar aðgerðir innan CS50 bókasafn 6 00:00:15,000 --> 00:00:18,000 að samþykkja notandi inntak, eins og "að fá band," 7 00:00:18,000 --> 00:00:23,000 sem hvetja notandann, á meðan umsókn er í gangi, að streng. 8 00:00:23,000 --> 00:00:28,000 >> Hins vegar eru tilvik þar sem þú vilt að veita program inntak þinn 9 00:00:28,000 --> 00:00:30,000 áður en það er í raun í gangi. 10 00:00:30,000 --> 00:00:34,000 This vegur, þú þarft ekki að biðja frekari upplýsingar frá notanda þinni 11 00:00:34,000 --> 00:00:38,000 meðan framkvæmd einfalda verkefni. 12 00:00:38,000 --> 00:00:42,000 Taka, til dæmis, MV eða færa stjórn í UNIX. 13 00:00:42,000 --> 00:00:49,000 Þessi skipun gerir notandanum kleift að færa skrá frá einum stað til annars. 14 00:00:49,000 --> 00:00:55,000 Samkvæmt handbók síður, MV tekur tvær stjórn lína rifrildi: 15 00:00:55,000 --> 00:01:00,000 skrána sem verið er að flytja og staðsetningu skrá er flutt. 16 00:01:00,000 --> 00:01:06,000 Þannig hefur þetta dæmi skipun með tveimur rök. 17 00:01:06,000 --> 00:01:14,000 Svo hvernig segja við C kerfi okkar til að nýta þessar stjórn-lína rök? 18 00:01:14,000 --> 00:01:20,000 >> Jæja, kemur í ljós að helstu, sem við notum í öllum C forrit, hefur leyndarmál. 19 00:01:20,000 --> 00:01:26,000 Main tekur tvær breytur: argc og argv. 20 00:01:26,000 --> 00:01:28,000 Við skulum fara yfir þessi hugtök. 21 00:01:28,000 --> 00:01:33,000 >> Fyrsta breytu, argc, sem stendur fyrir fjölda rifrildi, 22 00:01:33,000 --> 00:01:36,000 hefur gögn tegund heil tala. 23 00:01:36,000 --> 00:01:42,000 The argc breytu inniheldur fjölda rökum, þar á meðal stjórn. 24 00:01:42,000 --> 00:01:47,000 Í stjórn hreyfingu, þótt við aðeins hafa tvær rök sýna, 25 00:01:47,000 --> 00:01:50,000 gildi argc verður 3. 26 00:01:50,000 --> 00:01:56,000 Annað breytu, argv, sem stendur fyrir vektor rifrildi, 27 00:01:56,000 --> 00:02:01,000 er fylki á bleikju ábendingum sem benda á strengi. 28 00:02:01,000 --> 00:02:06,000 >> Þetta þýðir að hver þáttur í argv, frá núlli, 29 00:02:06,000 --> 00:02:09,000 inniheldur skipunina og röksemdir. 30 00:02:09,000 --> 00:02:16,000 Til dæmis, argv [0], sem ég vísa til sem argv núll, 31 00:02:16,000 --> 00:02:20,000 mun alltaf vera stjórn sem verið er að keyra - 32 00:02:20,000 --> 00:02:22,000 í þessu tilfelli, MV. 33 00:02:22,000 --> 00:02:28,000 argv [1] mun innihalda fyrsta rifrildi, file.txt, 34 00:02:28,000 --> 00:02:37,000 og argv [2] mun innihalda seinni rök, ~ / cs50 /. 35 00:02:37,000 --> 00:02:42,000 Síðustu rök argv mun alltaf vera null. 36 00:02:42,000 --> 00:02:46,000 Svo skulum koma þessum stjórn-lína rök. 37 00:02:46,000 --> 00:02:53,000 Í fyrri æfingar, sett við tóm, þýðir að ekkert, sem breytu aðal. 38 00:02:53,000 --> 00:02:57,000 En í röð fyrir okkur til að nota stjórn-lína rök, 39 00:02:57,000 --> 00:03:12,000 við þurfum að fjarlægja ógilt og stað inni í helstu int argc, char * argv []. 40 00:03:12,000 --> 00:03:17,000 Nú, til að fá aðgang að öllum þáttur frá argv, sem eru rök þín, 41 00:03:17,000 --> 00:03:21,000 þú getur einfaldlega iterate eða lykkja í gegnum array svona. 42 00:03:21,000 --> 00:03:27,000 Svo inni í líkama aðal, þá ætlum við að fara á undan og slá a for lykkju: 43 00:03:27,000 --> 00:03:37,000 fyrir (INT i = 0, i 00:03:41,000 >> Við þurfum ekki hrokkið Brace hér því að við erum aðeins að framkvæma eina línu af kóða 45 00:03:41,000 --> 00:03:44,000 í líkamanum þessa lykkju. 46 00:03:44,000 --> 00:03:47,000 Við munum fara á undan og högg flipann einu sinni, 47 00:03:47,000 --> 00:03:57,000 þá tegund printf ("argv [% d], til að tákna integer, 48 00:03:57,000 --> 00:04:06,000 er% s, í band, þá nýja línu staf. 49 00:04:06,000 --> 00:04:12,000 Þá bjóðum við printf i fyrir núverandi endurtekning á lykkju 50 00:04:12,000 --> 00:04:18,000 og argv [i] fyrir band framsetning núverandi stjórn-lína rök. 51 00:04:18,000 --> 00:04:25,000 Þegar við hlaupum það með tveimur rökum munum við sjá rök sem birtist í flugstöðinni. 52 00:04:34,000 --> 00:04:38,000 Fyrr við sagði að argv haldið fjölda af bleikju ábendingum. 53 00:04:38,000 --> 00:04:45,000 >> Svo ef þetta er raunin, hvernig við aðgang þá einstaka stafi í hverju rifrildi? 54 00:04:45,000 --> 00:04:51,000 Til dæmis, hvað ef ég vildi að leita að sérstökum karakter í fyrsta rifrildi? 55 00:04:51,000 --> 00:04:55,000 Jæja, svarið er að við þurfum að beita hreiður lykkju 56 00:04:55,000 --> 00:04:59,000 sem mun þá iterate gegnum hvert atriði í rifrildi band. 57 00:04:59,000 --> 00:05:02,000 Þetta er hvernig þú gerir það. 58 00:05:02,000 --> 00:05:10,000 >> Í fyrsta lagi erum við að fara að gera afrit af example2.c. 59 00:05:10,000 --> 00:05:13,000 Þá, inni fyrst fyrir lykkju, 60 00:05:13,000 --> 00:05:15,000 við erum að fara að bæta við í lykkju. 61 00:05:15,000 --> 00:05:28,000 Svo fyrir (int j = 0, n = strlen (argv [i]), 62 00:05:28,000 --> 00:05:32,000 sem gefur svo okkur lengd núverandi rök, 63 00:05:32,000 --> 00:05:39,000 , J 00:05:43,000 Við erum að fara að prenta staðsetningu hvern staf 65 00:05:43,000 --> 00:05:47,000 inni af núverandi rök með printf. 66 00:05:47,000 --> 00:05:57,000 Svo, printf ("argv [% d], til að tákna vísitölu núverandi rök, 67 00:05:57,000 --> 00:06:05,000 þá [% d] aftur, til að tákna núverandi eðli núverandi rök, 68 00:06:05,000 --> 00:06:13,000 er:% c, fyrir núverandi staf í rifrildi. 69 00:06:13,000 --> 00:06:20,000 Loks gefum printf með vísitölu ytri lykkju, i 70 00:06:20,000 --> 00:06:22,000 þá vísitölu innri lykkju. 71 00:06:22,000 --> 00:06:28,000 >> Og síðast rök okkar til printf er raunverulegt eðli frá rifrildi enda 72 00:06:28,000 --> 00:06:31,000 á stjórn lína. 73 00:06:31,000 --> 00:06:37,000 Nú, vegna þess að ég notaði band virka strlen að fá lengd band, 74 00:06:37,000 --> 00:06:43,000 Ég þarf einnig að bæta string.h bókasafn til the toppur af nær okkar. 75 00:06:43,000 --> 00:06:50,000 Svo, til að gera það, við förum upp, og tæplega stdio.h, við erum að fara að gera 76 00:06:50,000 --> 00:06:57,000 # Include . 77 00:06:57,000 --> 00:07:02,000 >> Svo, við skulum taka saman og hlaupa og gefa það í raun rök. 78 00:07:09,000 --> 00:07:18,000 >> Og, eins og við getum séð, höfum við nú nákvæma staðsetningu hvers bleikju í rifrildi. 79 00:07:18,000 --> 00:07:23,000 Svo er það það. Ég er Christopher Bartholomew, þetta er CS50. 80 00:07:23,000 --> 00:07:26,000 [CS50.TV]