[Powered by Google Translate] [Naredbenog retka argumente]
[Christopher Bartolomej - Sveučilište Harvard]
[Ovo je CS50 - CS50.TV]
Korisna značajka za program je prihvatiti korisničkog unosa.
Dosad smo istražili neke funkcije unutar CS50 knjižnici
prihvatiti korisničkog unosa, kao što su "dobili niz"
koji traži od korisnika, a aplikacija je trčanje, za niz.
>> Međutim, postoje slučajevi u kojima želite dati svoj doprinos programa
prije nego što zapravo radi.
Na taj način, ne morate tražiti dodatne informacije od svog korisnika
dok izvršavanju jednostavan zadatak.
Uzmite, na primjer, SN ili premjestiti naredbu u UNIX.
Ova naredba omogućuje korisniku premjestiti datoteku s jednog mjesta na drugo.
Prema priručniku stranicama, mv prihvaća dva argumenta naredbenog retka:
datoteku koja se preselila i mjesto je datoteka se preselio.
Dakle, ovo je primjer ima naredbu s dva argumenta.
Pa kako ćemo reći naš C program koristiti ove naredbenog retka argumente?
>> Pa, ispada da glavni, koji ćemo koristiti u svim programima C, ima tajnu.
Glavni prihvaća dva parametra: argc i argv.
Idemo nad tim uvjetima.
>> Prvi parametar, argc, koja se zalaže za argument count,
ima vrstu podataka cijeli broj.
The argc parametar sadrži niz argumenata, uključujući naredbe.
U našem potez naredbe, iako smo samo dva argumenta prikazana,
argc je vrijednost će biti tri.
Drugi parametar, argv, koja se zalaže za argument vektora,
je niz char upućuje da ukazuju na žice.
>> To znači da svaki element u argv, počevši od nule,
sadrži naredbu i argumente.
Na primjer, argv [0], što ću nazivaju argv nula,
uvijek će sadržavati naredbu da se pokrenuti -
u ovom slučaju, mv.
argv [1] će sadržavati prvi argument file.txt,
i argv [2] će sadržavati drugi argument, ~ / cs50 /.
Posljednji argument argv uvijek će biti nula.
Tako ćemo provesti ove naredbenog retka argumente.
U prethodnim vježbama, smo stavili prazninu, što znači ništa, kao glavni je parametar.
Međutim, kako bi za nas da koriste naredbenog retka argumente,
moramo ukloniti šupljikave i mjesto unutar glavnog int argc, char * argv [].
Sada, da biste pristupili cijeli element iz argv, koji su vaši argumenti,
možete jednostavno ponoviti, ili petlja kroz niz ovako.
Dakle, unutar glavnih tijela, idemo ići naprijed i upišite for petlje:
za (int i = 0; ja <argc; ja + +).
>> Mi ne treba kovrčavu braće ovdje, jer mi samo ti izvršavanju jedan redak koda
unutar tijela ovoj petlji.
Mi ćemo ići naprijed i udario tab jednom,
zatim upišite printf ("argv [% d], da predstavlja cijeli broj,
je% s, za niz, onda je nova linija lik.
Onda smo pružiti printf ja za tekuću iteraciju petlje
i argv [i] za gudački reprezentacije tekućeg naredbenog retka argument.
Kada smo ga pokrenuti s dva argumenta, vidjet ćemo argumente koji se prikazuju u terminalu.
Ranije smo rekli da je argv održao niz char upućuje.
>> Dakle, ako je to slučaj, kako onda možemo pristupiti pojedinačne znakove u svakoj argument?
Na primjer, što ako sam htio tražiti određeni lik u prvom argumentu?
Pa, odgovor je da moramo primijeniti ugniježđene petlje
koji će potom ponoviti kroz svaki od elemenata u nizu argumenata.
Ovo je način kako ćete to učiniti.
>> Prvo, idemo napraviti kopiju example2.c.
Zatim, unutar prva for petlja,
idemo dodati dodatni for petlje.
Tako je za (int j = 0, n = strlen (argv [i]),
koji je tada nam daje duljinu trenutne argumenta,
; J <n, j + +)
Mi ćemo ispisati mjesto svakog lika
unutar postojećeg argumenta pomoću printf.
Dakle, printf ("argv [% d], predstavljaju indeks trenutne argumenta,
zatim [% d] opet, da predstavljaju trenutni karakter trenutne argumenta,
je:% c, za tekuću lik u argument.
Na kraju, možemo pružiti printf s indeksom vanjskog petlje, ja,
zatim indeks unutarnje petlje.
>> I naš posljednji argument printf da je stvarni lik iz argumenta uvjetom
u zapovjednoj liniji.
Sada, jer sam koristio niz funkcija strlen dobiti duljinu niza,
Također moram dodati string.h knjižnicu na vrhu naše uključuje.
Dakle, za to, mi ćemo ići gore, i samo pod stdio.h, idemo napraviti
# Include .
>> Dakle, neka je sastaviti i pokrenuti i pružiti mu stvarni argument.
>> I, kao što možemo vidjeti, mi sada imamo točnu lokaciju svakog pojedinog char u argument.
Dakle, to je to. Ja sam Christopher Bartolomej, ovo je CS50.
[CS50.TV]