[Powered by Google Translate] [Komandrindas argumenti]
[Christopher Bērtuli - Hārvarda]
[Tas ir CS50 - CS50.TV]
Noderīgs līdzeklis programmai ir pieņemt lietotāja ievadi.
Līdz šim mēs esam izpētīt dažas funkcijas ietvaros CS50 bibliotēkā
pieņemt lietotāja ievadi, piemēram, "get virkne,"
kas liek lietotājam, kamēr darbojas programma, par virkni.
>> Tomēr ir gadījumi, kad jūs vēlaties, lai nodrošinātu jūsu programma ievadi
pirms tas faktiski darbojas.
Tādā veidā, jums nav nepieciešams pieprasīt papildu informāciju no sava lietotāja
vienlaikus izpildot vienkāršu uzdevumu.
Veikt, piemēram, MV vai pārvietotu komandu UNIX.
Šī komanda ļauj lietotājam pārvietoties failu no vienas vietas uz citu.
Saskaņā ar manuālo lapām, MV akceptē divi komandrindas argumentus:
fails, kas tiek pārvietots un atrašanās fails tiek pārvietots uz.
Tātad šis piemērs ir komandu ar diviem argumentiem.
Tātad, kā mēs pateikt mūsu C programmu izmantot šīs komandrindas argumentus?
>> Nu, izrādās, ka galvenais, ko mēs izmantot visu C programmās, ir noslēpums.
Galvenais akceptē divi parametri: argc un argv.
Iesim pa šiem noteikumiem.
>> Pirmais parametrs, argc, kas apzīmē arguments skaits,
ir datu tipu skaitlim.
The argc parametrs satur vairākus argumentus, tostarp komandu.
Mūsu komandu Pārvietot, lai gan mums ir tikai divi argumenti redzams,
argc vērtība būs 3.
Otrs rādītājs, argv, kas apzīmē arguments vektors,
ir masīvs char norādes, kas norāda uz stīgas.
>> Tas nozīmē, ka katrs argv elements, sākot no nulles,
satur komandu un argumentus.
Piemēram, argv [0], ko es ņemšu uz kā nulles argv,
vienmēr satur komandu, kas tiek īstenots -
Šajā gadījumā, MV.
argv [1] jānorāda pirmo argumentu, file.txt,
un argv [2] jānorāda uz otro argumentu, ~ / CS50 /.
Pēdējais arguments argv vienmēr būs nulle.
Tāpēc pieņemsim ieviest šīs komandrindas argumentus.
Iepriekšējās vingrinājumus, mēs ievietots tukšumu, kas nozīmē neko, jo Main s parametrs.
Tomēr, lai mēs varētu izmantot komandrindas argumentus,
Mums ir nepieciešams, lai novērstu neesošu un vieta iekšpusē galveno int argc, char * argv [].
Tagad, lai piekļūtu visu elementu no argv, kas ir jūsu argumenti,
Jūs varat vienkārši atkārtot, vai cilpa, caur masīvu kā šis.
Tātad, iekšpusē no galvenajiem ķermeņa, mēs ejam, lai iet uz priekšu un rakstīt par cilpu:
par (int i = 0, i <argc; i + +).
>> Mums nav vajadzīga cirtaini lencēm šeit, jo mēs esam tikai izpildot vienu rindiņu kodu
organismā šī cilpa.
Mēs iesim uz priekšu un hit cilni vienreiz,
ierakstiet printf ("argv [% d], lai pārstāvētu veselu vērtību,
ir% s, virknes, tad jaunā līnija raksturs.
Tad mēs piedāvājam printf I pašreizējā atkārtojuma no cilpas
un argv [i] par stīgu pārstāvību pašreizējās komandrindas arguments.
Kad mēs palaist to ar diviem argumentiem, mēs redzēsim argumentus tiek parādītas terminālā.
Agrāk mēs teicām, ka argv notika masīvs char norādes.
>> Tātad, ja tas ir gadījumā, kā mēs pēc tam piekļūt atsevišķas rakstzīmes katrā argumentu?
Piemēram, kas notiks, ja es gribēju meklēt īpaša rakstura pirmo argumentu?
Nu, atbilde ir tāda, ka mums jāpiemēro Nested cilpas
ka tad atkārtot, izmantojot katru no argumenta virknē elementiem.
Tas ir, kā jūs to darīt.
>> Pirmkārt, mēs esam gatavojas veikt kopiju example2.c.
Tad iekšpusē pirmā cilpa,
mēs esam gatavojas pievienot papildu cilpa.
Tātad par (int j = 0, n = strlen (argv [i]),
kas tad dod mums garumu pašreizējā argumentu,
, J <n, j + +)
Mēs ejam, lai drukātu, kur atrodas katra rakstura
iekšpusē pašreizējo argumentu izmantojot printf.
Tātad, printf ("argv [% d], lai pārstāvētu indeksu pašreizējā argumentu,
tad [% d] vēlreiz, lai pārstāvētu pašreizējo raksturu pašreizējā argumentu,
ir:% c, par pašreizējo rakstura argumentu.
Visbeidzot, mēs piedāvājam printf ar indeksu ārējā cilpas, es,
tad indekss iekšējās cilpas.
>> Un mūsu pēdējais arguments, lai printf ir faktiskais raksturs no sniegto argumentu
pie komandrindas.
Tagad, jo es izmanto virknes funkciju strlen iegūt garumu virknes,
Man ir arī pievienot string.h bibliotēku uz augšu mūsu ietver.
Tātad, lai to izdarītu, mēs iet uz augšu, un tikai zem stdio.h, mēs esam gatavojas darīt
# Ietvert .
>> Tātad, pieņemsim apkopot un palaist, un nodrošināt to faktisko argumentu.
>> Un, kā mēs varam redzēt, mums tagad ir noteikt precīzu atrašanās vietu katra atsevišķā char pamatots arguments.
Tāpēc, ka tas arī viss. Es esmu Kristofers Bērtuli, tas ir CS50.
[CS50.TV]