[Powered by Google Translate] [Komentoriviargumenteista]
[Christopher Bartholomew - Harvardin yliopisto]
[Tämä on CS50 - CS50.TV]
Hyödyllinen ominaisuus ohjelmassa on hyväksyä käyttäjä syöttää.
Toistaiseksi olemme tutkitaan joitakin tehtäviä CS50 kirjastossa
hyväksymään käyttäjän syötettä, kuten "saada merkkijono"
joka kysyy käyttäjältä, kun sovellus on käynnissä, ja merkkijono.
>> On kuitenkin tapauksia, joissa haluat antaa oman ohjelmasyöte
ennen kuin se on käynnissä.
Näin sinun ei tarvitse kysyä lisätietoja käyttäjän
suoritettaessa yksinkertainen tehtävä.
Otetaan esimerkiksi mv tai siirtää komento UNIX.
Tämä komento sallii käyttäjän siirtää tiedoston yhdestä paikasta toiseen.
Mukaan ohjesivuja, mv hyväksyy kaksi komentoriviargumentteja:
tiedosto on siirretty ja paikka tiedosto on siirretty.
Joten tässä esimerkissä on komennon kaksi argumenttia.
Miten siis kertoa C-ohjelma käyttää näitä komentorivin argumentteja?
>> No, näyttää siltä, ​​että tärkeimmät, jota käytämme kaikissa C-ohjelmissa, on salaisuus.
Tärkeimmät hyväksyy kaksi parametria: argc ja argv.
Mennään yli nämä ehdot.
>> Ensimmäinen parametri, argc, joka on lyhenne sanoista argumentti count,
on tietotyyppi kokonaisluku.
Argc parametri sisältää useita väitteitä, kuten komentoa.
Meidän Siirrä-komennon, vaikka meillä on vain kaksi argumenttia näkyvissä,
argc arvo on 3.
Toinen parametri, argv, joka on lyhenne sanoista argumentti vektori,
on joukko char osoittimia, jotka osoittavat merkkijonoja.
>> Tämä tarkoittaa, että jokaisen elementin argv, aloitetaan nollasta,
sisältää komennon ja argumentteja.
Esimerkiksi argv [0], joka Kutsun kuin argv nolla,
sisältää aina komento ajetaan -
tässä tapauksessa, mv.
argv [1] sisältää ensimmäisen väitteen, tiedosto.txt,
ja argv [2] sisältää toisen väitteen, ~ / cs50 /.
Viimeinen väite argv aina nolla.
Joten toteuttamaan näitä komentorivin argumentteja.
Aiemmissa harjoituksissa, otimme mitätön, eli ei mitään, koska tärkein parametri.
Kuitenkin, jotta voimme käyttää komentorivin argumentteja,
Meidän täytyy poistaa mitättömäksi ja paikka sisällä tärkeimpien int argc, char * argv [].
Nyt, käyttää koko elementti argv, jotka ovat teidän argumentteja,
voit toistaa tai silmukan läpi array näin.
Joten sisällä tärkeimpien kehon, aiomme mennä eteenpäin ja kirjoita varten silmukka:
for (int i = 0; i <argc; i + +).
>> Emme tarvitse kihara ahdin tänne, koska olemme vain suorittamalla yksi rivi koodia
kehossa tämän silmukan.
Menemme eteenpäin ja osui välilehti kerran,
kirjoita printf ("argv [% d], edustaa kokonaisluku,
on% s, jousikvartetille, sitten uusi rivi merkki.
Sitten me tarjota printf i nykyistä iteraatiota varten silmukka-
ja argv [i] merkkijono edustus nykyisen komentorivin argumentti.
Kun ajaa sen kaksi perustelua, näemme perustelut näytetään päätelaitteessa.
Aiemmin kerroimme, että argv hallussa joukko char osoittimia.
>> Joten, jos näin on, miten voimme sitten käyttää yksittäisiä merkkejä jokaiselle argumentille?
Esimerkiksi, mitä jos halusin etsiä erityisluonnetta ensimmäisen argumentin?
No, vastaus on, että meidän on sovellettava sisäkkäisen silmukan
, joka sitten iteroidaan läpi kunkin elementtien argumentti merkkijono.
Näin teet sen.
>> Ensinnäkin, me aiomme tehdä kopion example2.c.
Sitten sisällä ensin silmukka,
aiomme lisätä ylimääräistä varten silmukka.
Joten (int j = 0, n = strlen (argv [i]),
joka sitten antaa meille pituus nykyisen väite,
J <n; j + +)
Menemme tulostaa sijainnin kunkin merkin
sisällä nykyisen väitteen käyttämällä printf.
Niin, printf ("argv [% d], edustaa indeksi nykyisen väite,
sitten [% d] jälleen edustamaan nykyistä luonnetta nykyisen väitteen,
on:% C, nykyisen merkin argumentti.
Lopuksi, tarjoamme printf kanssa indeksi ulomman silmukan, i,
Sitten indeksi sisemmän silmukan.
>> Ja viimeinen argumentti printf on todellinen hahmo perustelua,
komentoriviltä.
Nyt, koska käytin merkkijono strlen saada pituus merkkijono,
Minun on myös lisätä string.h kirjaston alkuun meidän kuuluu.
Joten, tehdä, että me menemme ylös, ja vajaat stdio.h, aiomme tehdä
# Include .
>> Joten, nyt kääntää ja ajaa ja antaa se todellinen argumentti.
>> Ja kuten näemme, meillä on nyt tarkka sijainti kunkin nieriää argumentti.
Joten se siitä. Olen Christopher Bartolomeus, tämä on CS50.
[CS50.TV]