1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Amri-Line Hoja] 2 00:00:02,000 --> 00:00:04,000 [Christopher Bartholomayo - Chuo Kikuu cha Harvard] 3 00:00:04,000 --> 00:00:07,000 [Hii ni CS50 - CS50.TV] 4 00:00:07,000 --> 00:00:11,000 Kipengele muhimu kwa ajili ya mpango huo ni kukubali mtumiaji pembejeo. 5 00:00:11,000 --> 00:00:15,000 Hivi sasa, tumekuwa Kugundua baadhi ya majukumu ndani ya maktaba CS50 6 00:00:15,000 --> 00:00:18,000 kukubali mtumiaji pembejeo, kama vile "kupata kamba," 7 00:00:18,000 --> 00:00:23,000 ambayo humshauri mtumiaji, wakati maombi ni mbio, kwa kamba. 8 00:00:23,000 --> 00:00:28,000 >> Hata hivyo, kuna matukio ambapo unataka kutoa programu yako ya pembejeo 9 00:00:28,000 --> 00:00:30,000 kabla ni kweli mbio. 10 00:00:30,000 --> 00:00:34,000 Kwa njia hii, huna haja ya kuuliza maelezo ya ziada kutoka kwa mtumiaji yako 11 00:00:34,000 --> 00:00:38,000 wakati wa utekelezaji kazi rahisi. 12 00:00:38,000 --> 00:00:42,000 Chukua, kwa mfano, mv au amri ya hoja katika UNIX. 13 00:00:42,000 --> 00:00:49,000 Amri hii inaruhusu mtumiaji hoja faili kutoka eneo moja hadi jingine. 14 00:00:49,000 --> 00:00:55,000 Kulingana na kurasa mwongozo, mv anapokea mbili hoja mstari amri: 15 00:00:55,000 --> 00:01:00,000 faili kwamba inahamishwa na mahali faili inahamishwa kwa. 16 00:01:00,000 --> 00:01:06,000 Basi mfano hii ina amri kwa hoja mbili. 17 00:01:06,000 --> 00:01:14,000 Hivyo ni jinsi gani sisi tunasema wetu C mpango wa kutumia hoja hizi amri ya mstari? 18 00:01:14,000 --> 00:01:20,000 >> Naam, ni zinageuka kuwa kuu, ambayo sisi kutumia katika mipango yote C, ana siri. 19 00:01:20,000 --> 00:01:26,000 Kuu anapokea vigezo mbili: argc na argv. 20 00:01:26,000 --> 00:01:28,000 Hebu kwenda juu ya maneno haya. 21 00:01:28,000 --> 00:01:33,000 >> parameter kwanza, argc, ambayo inasimamia kwa kuhesabu hoja, 22 00:01:33,000 --> 00:01:36,000 ina aina ya data integer. 23 00:01:36,000 --> 00:01:42,000 parameter argc ina idadi ya hoja, ikiwa ni pamoja na amri. 24 00:01:42,000 --> 00:01:47,000 Katika hatua ya amri yetu, ingawa sisi tu kuwa wawili hoja visas, 25 00:01:47,000 --> 00:01:50,000 thamani argc itakuwa 3. 26 00:01:50,000 --> 00:01:56,000 parameter pili, argv, ambayo inasimamia kwa vector hoja, 27 00:01:56,000 --> 00:02:01,000 ni safu ya kuyatumia Char kwamba kumweka kwa masharti. 28 00:02:01,000 --> 00:02:06,000 >> Hii ina maana kwamba kila kipengele katika argv, kuanzia sifuri, 29 00:02:06,000 --> 00:02:09,000 ina amri na hoja. 30 00:02:09,000 --> 00:02:16,000 Kwa mfano, argv [0], ambayo mimi itabidi rejea kama argv sifuri, 31 00:02:16,000 --> 00:02:20,000 daima vyenye amri kwamba ni kuwa kukimbia - 32 00:02:20,000 --> 00:02:22,000 katika kesi hiyo, mv. 33 00:02:22,000 --> 00:02:28,000 argv [1] yana hoja ya kwanza, file.txt, 34 00:02:28,000 --> 00:02:37,000 na argv [2] yana hoja ya pili, ~ / cs50 /. 35 00:02:37,000 --> 00:02:42,000 Hoja ya mwisho ya argv daima kuwa null. 36 00:02:42,000 --> 00:02:46,000 Basi hebu kutekeleza hoja hizi amri-line. 37 00:02:46,000 --> 00:02:53,000 Katika mazoezi ya awali, sisi kuwekwa utupu, kwa maana ya kitu, kama parameter kuu ya. 38 00:02:53,000 --> 00:02:57,000 Hata hivyo, ili kwa ajili yetu kwa kutumia hoja amri-line, 39 00:02:57,000 --> 00:03:12,000 tunahitaji kuondoa batili na mahali ndani ya kuu int argc, char * argv []. 40 00:03:12,000 --> 00:03:17,000 Sasa, ili kupata kipengele mzima kutoka argv, ambayo ni hoja yako, 41 00:03:17,000 --> 00:03:21,000 unaweza tu iterate, au kitanzi, kupitia safu kama hii. 42 00:03:21,000 --> 00:03:27,000 Hivyo, ndani ya mwili kuu, sisi ni kwenda kwenda mbele na aina kwa kitanzi: 43 00:03:27,000 --> 00:03:37,000 kwa ajili ya (i = 0 int; i 00:03:41,000 >> Hatuna haja brace curly hapa kwa sababu tuko tu utekelezaji moja mstari wa kanuni 45 00:03:41,000 --> 00:03:44,000 ndani ya mwili wa kitanzi hii. 46 00:03:44,000 --> 00:03:47,000 Tutaweza kwenda mbele na hit tab mara moja, 47 00:03:47,000 --> 00:03:57,000 basi aina ya printf ("argv [% d], kuwakilisha thamani integer, 48 00:03:57,000 --> 00:04:06,000 ni% s, kwa kamba, basi mwezi line tabia. 49 00:04:06,000 --> 00:04:12,000 Kisha sisi kutoa printf i kwa iteration ya sasa ya kitanzi 50 00:04:12,000 --> 00:04:18,000 na argv [i] kwa ajili ya uwakilishi kamba ya hoja ya sasa amri-line. 51 00:04:18,000 --> 00:04:25,000 Wakati sisi kukimbia kwa hoja mbili, tutaweza kuona hoja kuwa visas katika terminal. 52 00:04:34,000 --> 00:04:38,000 Mapema sisi alisema kwamba argv uliofanyika safu ya kuyatumia Char. 53 00:04:38,000 --> 00:04:45,000 >> Hivyo, kama hii ni kesi, ni jinsi gani sisi basi upatikanaji wahusika binafsi katika hoja kila? 54 00:04:45,000 --> 00:04:51,000 Kwa mfano, ni kama alitaka kuangalia kwa ajili ya tabia maalum katika hoja ya kwanza? 55 00:04:51,000 --> 00:04:55,000 Naam, jibu ni kwamba tunahitaji kuomba kitanzi nested 56 00:04:55,000 --> 00:04:59,000 ambayo baadaye iterate kupitia kila kipengele katika string hoja. 57 00:04:59,000 --> 00:05:02,000 Hii ni jinsi ya kufanya hivyo. 58 00:05:02,000 --> 00:05:10,000 >> Kwanza, sisi ni kwenda kufanya nakala ya example2.c. 59 00:05:10,000 --> 00:05:13,000 Kisha, ndani ya kwanza kwa kitanzi, 60 00:05:13,000 --> 00:05:15,000 sisi ni kwenda kuongeza ziada kwa kitanzi. 61 00:05:15,000 --> 00:05:28,000 Hivyo kwa (int j = 0, n = strlen (argv [i]), 62 00:05:28,000 --> 00:05:32,000 ambayo kisha anatupa urefu wa hoja ya sasa, 63 00:05:32,000 --> 00:05:39,000 ; J 00:05:43,000 Sisi ni kwenda magazeti eneo la tabia ya kila 65 00:05:43,000 --> 00:05:47,000 ndani ya hoja ya sasa kwa kutumia printf. 66 00:05:47,000 --> 00:05:57,000 Hivyo, printf ("argv [% d], kuwakilisha index ya hoja ya sasa, 67 00:05:57,000 --> 00:06:05,000 kisha [% d] kwa mara nyingine tena, kuwakilisha tabia ya sasa ya hoja ya sasa, 68 00:06:05,000 --> 00:06:13,000 ni:% c, kwa ajili ya tabia ya sasa katika hoja. 69 00:06:13,000 --> 00:06:20,000 Mwisho, sisi kutoa printf na index ya kitanzi nje, i, 70 00:06:20,000 --> 00:06:22,000 kisha index ya kitanzi ndani. 71 00:06:22,000 --> 00:06:28,000 >> Na hoja yetu ya mwisho ni tabia halisi printf kutoka hoja zinazotolewa 72 00:06:28,000 --> 00:06:31,000 katika mstari amri. 73 00:06:31,000 --> 00:06:37,000 Sasa, kwa sababu mimi kutumika kazi string strlen kupata urefu wa kamba, 74 00:06:37,000 --> 00:06:43,000 Mimi lazima pia kuongeza maktaba string.h juu ya ni pamoja na wetu. 75 00:06:43,000 --> 00:06:50,000 Hivyo, kwa kufanya hivyo, tutaweza kwenda juu, na tu chini ya stdio.h, tunakwenda kufanya 76 00:06:50,000 --> 00:06:57,000 # Pamoja . 77 00:06:57,000 --> 00:07:02,000 >> Hivyo, hebu kukusanya na kukimbia na kutoa hiyo hoja halisi. 78 00:07:09,000 --> 00:07:18,000 >> Na, kama tunaweza kuona, sasa tuna eneo halisi ya Char kila mtu binafsi katika hoja. 79 00:07:18,000 --> 00:07:23,000 Hivyo hiyo ni yake. Mimi nina Christopher Bartholomayo, hii ni CS50. 80 00:07:23,000 --> 00:07:26,000 [CS50.TV]