1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Command-Line Dadleuon] 2 00:00:02,000 --> 00:00:04,000 [Christopher Bartholomew - Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Mae hyn yn CS50 - CS50.TV] 4 00:00:07,000 --> 00:00:11,000 Nodwedd ddefnyddiol ar gyfer rhaglen yw derbyn mewnbwn defnyddwyr. 5 00:00:11,000 --> 00:00:15,000 Hyd yn hyn, rydym wedi archwilio rhai swyddogaethau o fewn y llyfrgell CS50 6 00:00:15,000 --> 00:00:18,000 i dderbyn, mewnbwn defnyddwyr, megis "cael llinyn," 7 00:00:18,000 --> 00:00:23,000 sy'n annog y defnyddiwr, tra bod y cais yn cael ei rhedeg, ar gyfer llinyn. 8 00:00:23,000 --> 00:00:28,000 >> Fodd bynnag, mae yna achosion lle rydych am roi eich mewnbwn rhaglen 9 00:00:28,000 --> 00:00:30,000 cyn iddo gael ei redeg mewn gwirionedd. 10 00:00:30,000 --> 00:00:34,000 Fel hyn, nid oes angen i chi ofyn i wybodaeth ychwanegol oddi wrth eich defnyddiwr 11 00:00:34,000 --> 00:00:38,000 wrth weithredu tasg syml. 12 00:00:38,000 --> 00:00:42,000 Cymerwch, er enghraifft, y mv neu orchymyn symud yn UNIX. 13 00:00:42,000 --> 00:00:49,000 Mae'r gorchymyn yn caniatáu i'r defnyddiwr i symud ffeil o un lleoliad i'r llall. 14 00:00:49,000 --> 00:00:55,000 Yn ôl i'r tudalennau â llaw, mv yn derbyn dwy ddadl llinell orchymyn: 15 00:00:55,000 --> 00:01:00,000 y ffeil sy'n cael ei symud ac y lleoliad y ffeil yn cael ei symud i. 16 00:01:00,000 --> 00:01:06,000 Felly, yr enghraifft hon gorchymyn gyda dau dadleuon. 17 00:01:06,000 --> 00:01:14,000 Felly, sut rydym yn dweud wrth ein C rhaglen i ddefnyddio dadleuon hyn gorchymyn-lein? 18 00:01:14,000 --> 00:01:20,000 >> Wel, mae'n troi allan y prif, yr ydym yn eu defnyddio yn yr holl raglenni C, yn cadw cyfrinach. 19 00:01:20,000 --> 00:01:26,000 Main yn derbyn dau baramedr: argc a argv. 20 00:01:26,000 --> 00:01:28,000 Gadewch i ni fynd dros y telerau hyn. 21 00:01:28,000 --> 00:01:33,000 >> Y paramedr cyntaf, argc, sy'n sefyll ar gyfer cyfrif ddadl, 22 00:01:33,000 --> 00:01:36,000 Mae math data cyfanrif. 23 00:01:36,000 --> 00:01:42,000 Mae'r paramedr argc cynnwys y nifer o ddadleuon, gan gynnwys y gorchymyn. 24 00:01:42,000 --> 00:01:47,000 Yn ein gorchymyn symud, er ein bod wedi dim ond dwy ddadl harddangos, 25 00:01:47,000 --> 00:01:50,000 Bydd argc yn werth fod yn 3. 26 00:01:50,000 --> 00:01:56,000 Yr ail baramedr, argv, sy'n sefyll am fector ddadl, 27 00:01:56,000 --> 00:02:01,000 llu o awgrymiadau torgoch sy'n cyfeirio at llinynnau. 28 00:02:01,000 --> 00:02:06,000 >> Mae hyn yn golygu bod pob elfen yn argv, gan ddechrau o sero, 29 00:02:06,000 --> 00:02:09,000 yn cynnwys y gorchymyn a dadleuon. 30 00:02:09,000 --> 00:02:16,000 Er enghraifft, argv [0], y byddaf yn cyfeirio ato fel argv sero, 31 00:02:16,000 --> 00:02:20,000 Bydd bob amser gynnwys y gorchymyn sy'n cael ei rhedeg - 32 00:02:20,000 --> 00:02:22,000 yn yr achos hwn, mv. 33 00:02:22,000 --> 00:02:28,000 argv [1] yn cynnwys y ddadl gyntaf, file.txt, 34 00:02:28,000 --> 00:02:37,000 a argv [2] bydd yn cynnwys yr ail ddadl, ~ / cs50 /. 35 00:02:37,000 --> 00:02:42,000 Bydd y ddadl olaf argv bob amser yn null. 36 00:02:42,000 --> 00:02:46,000 Felly, gadewch i ni weithredu'r dadleuon gorchymyn-lein. 37 00:02:46,000 --> 00:02:53,000 Mewn ymarferion blaenorol, rydym yn gosod ddi-rym, sy'n golygu dim byd, fel y brif paramedr. 38 00:02:53,000 --> 00:02:57,000 Fodd bynnag, er mwyn i ni ddefnyddio gorchymyn-lein dadleuon, 39 00:02:57,000 --> 00:03:12,000 angen i ni symud ddi-rym a digwydd y tu mewn o brif int argc, cols * argv []. 40 00:03:12,000 --> 00:03:17,000 Nawr, er mwyn cael mynediad i'r elfen cyfan o argv, sy'n eich dadleuon, 41 00:03:17,000 --> 00:03:21,000 gallwch ailadrodd, neu ddolen, trwy'r amrywiaeth fel hyn. 42 00:03:21,000 --> 00:03:27,000 Felly, y tu mewn prif corff, rydym yn mynd i fynd yn ei flaen a theipiwch am ddolen: 43 00:03:27,000 --> 00:03:37,000 ar gyfer (i int = 0; ff 00:03:41,000 >> Nid ydym yn angen Brace cyrliog yma oherwydd ein bod yn cyflawni dim ond un llinell o god 45 00:03:41,000 --> 00:03:44,000 o fewn y corff y ddolen. 46 00:03:44,000 --> 00:03:47,000 Byddwn yn mynd yn ei flaen a tharo tab unwaith, 47 00:03:47,000 --> 00:03:57,000 yna teipiwch printf ("argv [% d], i gynrychioli gwerth cyfanrif, 48 00:03:57,000 --> 00:04:06,000 yw% s, ar gyfer llinyn, yna bydd y cymeriad llinell newydd. 49 00:04:06,000 --> 00:04:12,000 Yna, rydym yn darparu printf i am y fersiwn cyfredol y ddolen 50 00:04:12,000 --> 00:04:18,000 a argv [i] ar gyfer y gynrychiolaeth llinyn y presennol gorchymyn-lein ddadl. 51 00:04:18,000 --> 00:04:25,000 Pan fyddwn yn rhedeg gyda dwy ddadl, byddwn yn gweld y dadleuon yn cael eu harddangos yn y derfynfa. 52 00:04:34,000 --> 00:04:38,000 Yn gynharach rydym yn dweud bod cynnal y argv amrywiaeth o awgrymiadau torgoch. 53 00:04:38,000 --> 00:04:45,000 >> Felly, os yw hyn yn wir, sut byddwn wedyn yn cael mynediad cymeriadau unigol ym mhob dadl? 54 00:04:45,000 --> 00:04:51,000 Er enghraifft, beth os oeddwn i eisiau chwilio am gymeriad penodol yn y ddadl gyntaf? 55 00:04:51,000 --> 00:04:55,000 Wel, yr ateb yw bod angen i ddefnyddio dolen nythu 56 00:04:55,000 --> 00:04:59,000 fydd wedyn yn ailadrodd drwy bob un o'r elfennau yn y llinyn ddadl. 57 00:04:59,000 --> 00:05:02,000 Dyma sut ydych yn ei wneud. 58 00:05:02,000 --> 00:05:10,000 >> Yn gyntaf, rydym yn mynd i wneud copi o example2.c. 59 00:05:10,000 --> 00:05:13,000 Yna, tu mewn y cyntaf ar gyfer ddolen, 60 00:05:13,000 --> 00:05:15,000 rydym yn mynd i ychwanegu ychwanegol ar gyfer dolen. 61 00:05:15,000 --> 00:05:28,000 Felly, ar gyfer (j int = 0, n = strlen (argv [i]), 62 00:05:28,000 --> 00:05:32,000 sydd wedyn yn rhoi i ni hyd y ddadl ar hyn o bryd, 63 00:05:32,000 --> 00:05:39,000 , J 00:05:43,000 Rydym yn mynd i argraffu'r lleoliad pob cymeriad 65 00:05:43,000 --> 00:05:47,000 tu mewn i'r ddadl gyfredol drwy ddefnyddio printf. 66 00:05:47,000 --> 00:05:57,000 Felly, printf ("argv [% d], i gynrychioli mynegai o'r ddadl ar hyn o bryd, 67 00:05:57,000 --> 00:06:05,000 yna [% d] unwaith eto, i gynrychioli cymeriad presennol y ddadl ar hyn o bryd, 68 00:06:05,000 --> 00:06:13,000 yw: c%, ar gyfer y cymeriad presennol yn y ddadl. 69 00:06:13,000 --> 00:06:20,000 Yn olaf, rydym yn darparu printf gyda mynegai y ddolen allanol, i, 70 00:06:20,000 --> 00:06:22,000 yna bydd y mynegai y ddolen mewnol. 71 00:06:22,000 --> 00:06:28,000 >> Ac mae ein dadl olaf i printf yw'r cymeriad go iawn o'r ddadl a gynigiwyd 72 00:06:28,000 --> 00:06:31,000 ar y llinell orchymyn. 73 00:06:31,000 --> 00:06:37,000 Yn awr, oherwydd fy mod yn defnyddio'r strlen swyddogaeth llinyn i gael hyd llinyn, 74 00:06:37,000 --> 00:06:43,000 Rhaid i mi hefyd yn ychwanegu i'r llyfrgell string.h i ben ein cynnwys. 75 00:06:43,000 --> 00:06:50,000 Felly, i wneud hynny, byddwn yn mynd i fyny, ac ychydig dan stdio.h, rydyn ni'n mynd i wneud 76 00:06:50,000 --> 00:06:57,000 # Cynnwys . 77 00:06:57,000 --> 00:07:02,000 >> Felly, gadewch i ni lunio a rhedeg ac yn ei darparu dadl go iawn. 78 00:07:09,000 --> 00:07:18,000 >> Ac, fel y gallwn weld, mae gennym bellach union leoliad pob torgoch unigol yn y ddadl. 79 00:07:18,000 --> 00:07:23,000 Felly dyna ni. Rwy'n Christopher Bartholomew, mae hyn yn CS50. 80 00:07:23,000 --> 00:07:26,000 [CS50.TV]