[Powered by Google Translate] [Command-Line Dadleuon]
[Christopher Bartholomew - Harvard University]
[Mae hyn yn CS50 - CS50.TV]
Nodwedd ddefnyddiol ar gyfer rhaglen yw derbyn mewnbwn defnyddwyr.
Hyd yn hyn, rydym wedi archwilio rhai swyddogaethau o fewn y llyfrgell CS50
i dderbyn, mewnbwn defnyddwyr, megis "cael llinyn,"
sy'n annog y defnyddiwr, tra bod y cais yn cael ei rhedeg, ar gyfer llinyn.
>> Fodd bynnag, mae yna achosion lle rydych am roi eich mewnbwn rhaglen
cyn iddo gael ei redeg mewn gwirionedd.
Fel hyn, nid oes angen i chi ofyn i wybodaeth ychwanegol oddi wrth eich defnyddiwr
wrth weithredu tasg syml.
Cymerwch, er enghraifft, y mv neu orchymyn symud yn UNIX.
Mae'r gorchymyn yn caniatáu i'r defnyddiwr i symud ffeil o un lleoliad i'r llall.
Yn ôl i'r tudalennau â llaw, mv yn derbyn dwy ddadl llinell orchymyn:
y ffeil sy'n cael ei symud ac y lleoliad y ffeil yn cael ei symud i.
Felly, yr enghraifft hon gorchymyn gyda dau dadleuon.
Felly, sut rydym yn dweud wrth ein C rhaglen i ddefnyddio dadleuon hyn gorchymyn-lein?
>> Wel, mae'n troi allan y prif, yr ydym yn eu defnyddio yn yr holl raglenni C, yn cadw cyfrinach.
Main yn derbyn dau baramedr: argc a argv.
Gadewch i ni fynd dros y telerau hyn.
>> Y paramedr cyntaf, argc, sy'n sefyll ar gyfer cyfrif ddadl,
Mae math data cyfanrif.
Mae'r paramedr argc cynnwys y nifer o ddadleuon, gan gynnwys y gorchymyn.
Yn ein gorchymyn symud, er ein bod wedi dim ond dwy ddadl harddangos,
Bydd argc yn werth fod yn 3.
Yr ail baramedr, argv, sy'n sefyll am fector ddadl,
llu o awgrymiadau torgoch sy'n cyfeirio at llinynnau.
>> Mae hyn yn golygu bod pob elfen yn argv, gan ddechrau o sero,
yn cynnwys y gorchymyn a dadleuon.
Er enghraifft, argv [0], y byddaf yn cyfeirio ato fel argv sero,
Bydd bob amser gynnwys y gorchymyn sy'n cael ei rhedeg -
yn yr achos hwn, mv.
argv [1] yn cynnwys y ddadl gyntaf, file.txt,
a argv [2] bydd yn cynnwys yr ail ddadl, ~ / cs50 /.
Bydd y ddadl olaf argv bob amser yn null.
Felly, gadewch i ni weithredu'r dadleuon gorchymyn-lein.
Mewn ymarferion blaenorol, rydym yn gosod ddi-rym, sy'n golygu dim byd, fel y brif paramedr.
Fodd bynnag, er mwyn i ni ddefnyddio gorchymyn-lein dadleuon,
angen i ni symud ddi-rym a digwydd y tu mewn o brif int argc, cols * argv [].
Nawr, er mwyn cael mynediad i'r elfen cyfan o argv, sy'n eich dadleuon,
gallwch ailadrodd, neu ddolen, trwy'r amrywiaeth fel hyn.
Felly, y tu mewn prif corff, rydym yn mynd i fynd yn ei flaen a theipiwch am ddolen:
ar gyfer (i int = 0; ff <argc: i + +).
>> Nid ydym yn angen Brace cyrliog yma oherwydd ein bod yn cyflawni dim ond un llinell o god
o fewn y corff y ddolen.
Byddwn yn mynd yn ei flaen a tharo tab unwaith,
yna teipiwch printf ("argv [% d], i gynrychioli gwerth cyfanrif,
yw% s, ar gyfer llinyn, yna bydd y cymeriad llinell newydd.
Yna, rydym yn darparu printf i am y fersiwn cyfredol y ddolen
a argv [i] ar gyfer y gynrychiolaeth llinyn y presennol gorchymyn-lein ddadl.
Pan fyddwn yn rhedeg gyda dwy ddadl, byddwn yn gweld y dadleuon yn cael eu harddangos yn y derfynfa.
Yn gynharach rydym yn dweud bod cynnal y argv amrywiaeth o awgrymiadau torgoch.
>> Felly, os yw hyn yn wir, sut byddwn wedyn yn cael mynediad cymeriadau unigol ym mhob dadl?
Er enghraifft, beth os oeddwn i eisiau chwilio am gymeriad penodol yn y ddadl gyntaf?
Wel, yr ateb yw bod angen i ddefnyddio dolen nythu
fydd wedyn yn ailadrodd drwy bob un o'r elfennau yn y llinyn ddadl.
Dyma sut ydych yn ei wneud.
>> Yn gyntaf, rydym yn mynd i wneud copi o example2.c.
Yna, tu mewn y cyntaf ar gyfer ddolen,
rydym yn mynd i ychwanegu ychwanegol ar gyfer dolen.
Felly, ar gyfer (j int = 0, n = strlen (argv [i]),
sydd wedyn yn rhoi i ni hyd y ddadl ar hyn o bryd,
, J <n; j + +)
Rydym yn mynd i argraffu'r lleoliad pob cymeriad
tu mewn i'r ddadl gyfredol drwy ddefnyddio printf.
Felly, printf ("argv [% d], i gynrychioli mynegai o'r ddadl ar hyn o bryd,
yna [% d] unwaith eto, i gynrychioli cymeriad presennol y ddadl ar hyn o bryd,
yw: c%, ar gyfer y cymeriad presennol yn y ddadl.
Yn olaf, rydym yn darparu printf gyda mynegai y ddolen allanol, i,
yna bydd y mynegai y ddolen mewnol.
>> Ac mae ein dadl olaf i printf yw'r cymeriad go iawn o'r ddadl a gynigiwyd
ar y llinell orchymyn.
Yn awr, oherwydd fy mod yn defnyddio'r strlen swyddogaeth llinyn i gael hyd llinyn,
Rhaid i mi hefyd yn ychwanegu i'r llyfrgell string.h i ben ein cynnwys.
Felly, i wneud hynny, byddwn yn mynd i fyny, ac ychydig dan stdio.h, rydyn ni'n mynd i wneud
# Cynnwys .
>> Felly, gadewch i ni lunio a rhedeg ac yn ei darparu dadl go iawn.
>> Ac, fel y gallwn weld, mae gennym bellach union leoliad pob torgoch unigol yn y ddadl.
Felly dyna ni. Rwy'n Christopher Bartholomew, mae hyn yn CS50.
[CS50.TV]