[Powered by Google Translate] [Käsurea argumendid]
[Christopher Bartholomew - Harvardi Ülikool]
[See on CS50 - CS50.TV]
Kasulik funktsioon on programmi kasutaja andmeid sisestada.
Siiani oleme vaadelnud mõningaid funktsioone CS50 raamatukogu
saaks kasutaja andmeid sisestada, näiteks "saada stringi"
mis küsib kasutaja, kui rakendus töötab, sest string.
>> Siiski esineb juhtumeid, kus soovite anda oma programmi sisend
enne kui see tegelikult töötab.
Nii, sa ei pea küsima lisainformatsiooni oma kasutajanime
samas täidesaatev lihtne ülesanne.
Võtame näiteks, mv või liigub käsk UNIX.
See käsk võimaldab kasutajal liikuda faili ühest kohast teise.
Vastavalt manuaal lehti, mv võtab kaks käsurea argumente:
faili on liigutatud ja asukoht fail on kolinud.
Nii et see näide on käsu kaks argumenti.
Niisiis, kuidas me ütleme meie C programmi kasutada neid käsurea argumendid?
>> Noh, tuleb välja, et peamine, mis me kasutame kõiki C programme, on saladus.
Peamised võtab kaks parameetrit: argc ja argv.
Lähme üle nende tingimustega.
>> Esimene parameeter, argc, mis tähistab argument loota,
on andmete tüüpi täisarv.
Argc parameeter sisaldab mitmeid argumente, sealhulgas oskus.
Meie move käsu, kuigi meil on ainult kaks argumenti kuvata,
argc väärtus saab olema 3.
Teine parameeter, argv, mis tähistab argument vektor,
on array char vihjeid, mis viitavad stringid.
>> See tähendab, et iga element argv, alates nullist,
sisaldab käsku ja argumente.
Näiteks argv [0], mis ma viidata kui argv null,
sisaldab alati käsk, kus peal töötab -
sel juhul MV.
argv [1] peab sisaldama esimene argument, fail.txt,
ja argv [2] sisaldab teist argumenti, ~ / cs50 /.
Viimane argument argv on alati null.
Nii et olgem rakendada neid käsurea argumente.
Varasematel harjutusi, panime tühine, mis tähendab midagi, kui peamine parameetri.
Kuid selleks, et me kasutame käsurea argumendid,
peame kõrvaldama tühine ja koht sees peamine int argc, char * argv [].
Nüüd juurdepääsu kogu elemendi argv, mis on oma argumendid,
siis saad lihtsalt kinnitada, või silmus, läbi massiivi niimoodi.
Niisiis, sees peamine keha, me ei kavatse minna ja kirjuta jaoks silmus:
jaoks (int i = 0; i <argc; i + +).
>> Me ei vaja lokkis traksidega siin, sest me ainult selle ühe rida koodi
kehas see silmus.
Me läheme edasi ja vajuta lingile kord,
tippige printf ("argv [% d], kes esindab täisarv,
on% s, keelpilliorkestrile, siis reavahetusmärki.
Siis pakume printf i jooksva iteratsiooni loop
ja argv [i] jaoks string esindatuse praeguse käsurea argument.
Kui võtame seda kaks argumenti, näeme argumente, kuvatakse terminali.
Varem ütlesime, et argv toimunud massiivi char suunanäitajaks.
>> Niisiis, kui see on nii, kuidas me siis pääseda üksikute märkide iga argument?
Näiteks kui ma tahtsin otsida eripära esimeses argument?
Noh, vastus on, et me peame taotlema nested loop
et siis kinnitada, läbi iga elementi argument string.
See, kuidas sa seda teed.
>> Esiteks, me ei kavatse teha koopia example2.c.
Seejärel sees esimese jaoks silmus,
me kavatseme lisada täiendavaid jaoks silmus.
Nii jaoks (int j = 0, n = strlen (argv [i]),
mis siis annab meile pikkus praegune argument,
; J <n, j + +)
Me läheme printida asukoht iga märk
sees praegune argument kasutades printf.
Nii printf ("argv [% d], kes esindab indeks praegune argument,
siis [% d] taas, et kajastada praegust iseloomu praegune argument,
on:% c, praeguse iseloomuga argument.
Lõpuks anname printf koos indeksi välimine silmus, i,
siis indeks sisemise silmus.
>> Ja meie viimane argument printf on tegelik tegelasele argument ette
käsureal.
Nüüd, kuna ma kasutasin string funktsioon strlen saada pikkus string,
Pean ka lisama string.h raamatukogu tippu meie hulka.
Niisiis, mida teha, et me läheme üles ja napilt stdio.h, me teeme
# Include .
>> Niisiis, oletame, kompileerida ja käivitada ning anda see tegelik argument.
>> Ja nagu näeme, on meil nüüd täpset asukohta iga char argument.
Nii ongi. Ma olen Christopher Bartolomeus, see on CS50.
[CS50.TV]