1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Komandinės eilutės argumentai] 2 00:00:02,000 --> 00:00:04,000 [Christopher Baltramiejus - Harvardo universiteto] 3 00:00:04,000 --> 00:00:07,000 [Tai CS50 - CS50.TV] 4 00:00:07,000 --> 00:00:11,000 Naudinga funkcija programą yra priimti naudotojo įvesties. 5 00:00:11,000 --> 00:00:15,000 Iki šiol, mes ištirti kai kurias funkcijas per CS50 bibliotekoje 6 00:00:15,000 --> 00:00:18,000 priimti vartotojo įvestimi kaip "gauti eilutę, 7 00:00:18,000 --> 00:00:23,000 paragina vartotoją, o programa veikia, eilutę. 8 00:00:23,000 --> 00:00:28,000 >> Tačiau yra atvejų, kai norite suteikti savo programos indėlį 9 00:00:28,000 --> 00:00:30,000 , kol ji faktiškai veikia. 10 00:00:30,000 --> 00:00:34,000 Tokiu būdu, jums nereikia prašyti papildomos informacijos iš jūsų naudotojo 11 00:00:34,000 --> 00:00:38,000 vykdydama paprastas uždavinys. 12 00:00:38,000 --> 00:00:42,000 Paimkite, pavyzdžiui, MV arba perkelti komandą UNIX. 13 00:00:42,000 --> 00:00:49,000 Ši komanda leidžia vartotojui perkelti failą iš vienos vietos į kitą. 14 00:00:49,000 --> 00:00:55,000 Pagal vadovo puslapius, mv priima dviejų komandų eilutės argumentai: 15 00:00:55,000 --> 00:01:00,000 failas, kuris yra perkeltas ir vieta, failas yra perkeliamas į. 16 00:01:00,000 --> 00:01:06,000 Taigi šis pavyzdys komandą su dviem argumentais. 17 00:01:06,000 --> 00:01:14,000 Taigi, kaip mes pasakyti savo C programą naudoti šias komandų eilutės argumentus? 18 00:01:14,000 --> 00:01:20,000 >> Na, pasirodo, kad pagrindinė, kuri mes naudojame C programos, yra paslaptis. 19 00:01:20,000 --> 00:01:26,000 Pagrindinis priima du parametrus: argc ir argv. 20 00:01:26,000 --> 00:01:28,000 Eikime per šiuos terminus. 21 00:01:28,000 --> 00:01:33,000 >> Pirmasis parametras, argc, kuris reiškia argumentas skaičius, 22 00:01:33,000 --> 00:01:36,000 yra sveikojo skaičiaus duomenų tipas. 23 00:01:36,000 --> 00:01:42,000 Argc parametras yra argumentų, įskaitant komandų. 24 00:01:42,000 --> 00:01:47,000 Mūsų komandą Perkelti, nors mes tik du argumentai rodomas, 25 00:01:47,000 --> 00:01:50,000 argc vertė bus 3. 26 00:01:50,000 --> 00:01:56,000 Antrasis parametras, argv, kuris reiškia argumentas, vektoriaus, 27 00:01:56,000 --> 00:02:01,000 yra masyvas char rodykles, kad rodytų į eilutes. 28 00:02:01,000 --> 00:02:06,000 >> Tai reiškia, kad kiekvienas argv elementas, nuo nulio, 29 00:02:06,000 --> 00:02:09,000 yra komanda ir argumentus. 30 00:02:09,000 --> 00:02:16,000 Pavyzdžiui, argv [0], kurį aš jums kreiptis kaip argv nulio, 31 00:02:16,000 --> 00:02:20,000 visada turėti komandą, kuri yra paleisti - 32 00:02:20,000 --> 00:02:22,000 šiuo atveju, mv. 33 00:02:22,000 --> 00:02:28,000 argv [1] bus pateikta apie pirmąjį argumentą, plik.txt 34 00:02:28,000 --> 00:02:37,000 ir argv [2] bus pateikta apie antrąjį argumentą, ~ / CS50 /. 35 00:02:37,000 --> 00:02:42,000 Argv visada paskutinis argumentas yra niekinis. 36 00:02:42,000 --> 00:02:46,000 Todėl galime įgyvendinti šių komandų eilutės argumentai. 37 00:02:46,000 --> 00:02:53,000 Ankstesniais metais, mes įdėjome negaliojančiu, o tai reiškia, nieko, nes pagrindinis jo parametras. 38 00:02:53,000 --> 00:02:57,000 Tačiau tam, kad mums naudoti komandų eilutės argumentus, 39 00:02:57,000 --> 00:03:12,000 reikia pašalinti negaliojančiu ir vieta viduje pagrindinio int argc, char * argv []. 40 00:03:12,000 --> 00:03:17,000 Dabar atidarykite visą elementą iš argv, kurie yra jūsų argumentai, 41 00:03:17,000 --> 00:03:21,000 galite tiesiog kartoti, arba kilpa, per kaip tai masyvo. 42 00:03:21,000 --> 00:03:27,000 Taigi, viduje pagrindinis kūno, mes ketiname eiti į priekį ir įveskite for ciklas: 43 00:03:27,000 --> 00:03:37,000 už (int i = 0; i 00:03:41,000 >> Mums nereikia garbanotas petnešomis čia, nes mes tik surašant vieną eilutę kodo 45 00:03:41,000 --> 00:03:44,000 per šio ciklo kūną. 46 00:03:44,000 --> 00:03:47,000 Mes eiti į priekį ir spauskite klavišą "Tab" ir vieną kartą, 47 00:03:47,000 --> 00:03:57,000 tada įveskite printf ("argv [% d], atstovauti skaitinę vertę, 48 00:03:57,000 --> 00:04:06,000 yra% s, eilutė, tada naujos eilutės simbolį. 49 00:04:06,000 --> 00:04:12,000 Tada mes teikiame printf i einamaisiais iteracijos kilpos 50 00:04:12,000 --> 00:04:18,000 ir argv [i] styginių atstovavimo dabartinės komandų eilutės argumentas. 51 00:04:18,000 --> 00:04:25,000 Kai mes paleisti jį su dviem argumentais, mes pamatyti rodomi terminale argumentus. 52 00:04:34,000 --> 00:04:38,000 Anksčiau mums sakė,,, kad argv surengė Char gairėmis masyvo. 53 00:04:38,000 --> 00:04:45,000 >> Taigi, jei tai yra tuo atveju,, kaip mes tada eikite į atskirus simbolius kiekvieno argumento? 54 00:04:45,000 --> 00:04:51,000 Pavyzdžiui, ką daryti, jei aš norėjau ieškoti specifinių savybių pirmojo argumento? 55 00:04:51,000 --> 00:04:55,000 Na, atsakymas yra, kad mes turime taikyti lizdinė kilpos 56 00:04:55,000 --> 00:04:59,000 kad tada kartoti per kiekvieną argumento eilutės elementų. 57 00:04:59,000 --> 00:05:02,000 Tai, kaip jūs tai darote. 58 00:05:02,000 --> 00:05:10,000 >> Pirma, mes ketiname padaryti kopiją example2.c. 59 00:05:10,000 --> 00:05:13,000 Tada, viduje už linijos, 60 00:05:13,000 --> 00:05:15,000 mes ketiname pridėti papildoma kilpa. 61 00:05:15,000 --> 00:05:28,000 Taigi (int j = 0, n = strlen (argv [i]), 62 00:05:28,000 --> 00:05:32,000 , kuri suteikia mums dabartinės argumento ilgis, 63 00:05:32,000 --> 00:05:39,000 J 00:05:43,000 Mes ketiname spausdinti kiekvieno simbolio vietą 65 00:05:43,000 --> 00:05:47,000 viduje dabartinės argumento naudojant printf. 66 00:05:47,000 --> 00:05:57,000 Taigi, printf ("argv [% d], atstovauti dabartinio argumentą indeksą, 67 00:05:57,000 --> 00:06:05,000 [% d] dar kartą, atitinka esamą dabartinės argumentų pobūdį, 68 00:06:05,000 --> 00:06:13,000 yra:% c, dabartinio pobūdžio argumentą,. 69 00:06:13,000 --> 00:06:20,000 Galiausiai, mes teikiame printf su išorinės linijos. Indeksu, i 70 00:06:20,000 --> 00:06:22,000 tada vidinės linijos indeksas. 71 00:06:22,000 --> 00:06:28,000 >> Ir mūsų paskutinis argumentas printf yra tikrasis personažas iš samprotavimą, jeigu 72 00:06:28,000 --> 00:06:31,000 į komandų eilutę. 73 00:06:31,000 --> 00:06:37,000 Dabar, nes aš naudojamas eilutės funkcijos strlen gauti eilutės ilgį, 74 00:06:37,000 --> 00:06:43,000 Aš taip pat pridėti string.h biblioteką į mūsų apima viršuje. 75 00:06:43,000 --> 00:06:50,000 Taigi, tai padaryti, mes eiti, ir tik pagal stdio.h, mes ketiname daryti 76 00:06:50,000 --> 00:06:57,000 # Include . 77 00:06:57,000 --> 00:07:02,000 >> Taigi, galime sukompiliuoti ir paleisti ir suteikti jai faktinis argumentą. 78 00:07:09,000 --> 00:07:18,000 >> Ir, kaip matome, mes dabar turime tikslią vietą kiekvienu atskiru char teigiant. 79 00:07:18,000 --> 00:07:23,000 Taigi, kad viskas. Aš tikiu, Christopher Baltramiejus; tai CS50. 80 00:07:23,000 --> 00:07:26,000 [CS50.TV]