[Powered by Google Translate] TOMMY: V tem video bomo spoznali preusmerjanje in cevi. Do sedaj smo bili z uporabo funkcij, kot so printf, da iznos podatkov na terminalu in funkcije, kot so GetString da se omogoči uporabniku, da se zagotovi prispevek k naši Program tipkovnico. Naj hitro si oglejte program, ki dobi linijo vnos od uporabnika in ga oddaja. Na liniji 7, česar smo si za vrvico, in nato pa na liniji 8, smo ga natisnili nazaj. Naj pripravijo in vodijo naš program. Čudovito. Niz smo zagotavljali je ponovil nazaj nam na terminalu. To se je zgodilo zato, ker printf funkcija je pisal Tok imenuje standardni ven, ali s-t-d-out. Ko je nekaj napisal, da stdout, je privzeto prikazana na terminalu. Tako, da je vse lepo in prav, toda kaj, če se, namesto da bi prikazuje niz, smo želeli, da jo shranite v datoteko? Na primer, želimo, da se spomnimo, kaj naše Program naredili, ko smo ji dali poseben vhod kasneje. Ena od rešitev bi bila, da to stori v našem programu C, pri čemer nekatere posebne funkcije za pisanje v datoteke, ki jih bomo glej v drugem videu. Še lažje, čeprav bi bilo nekako preusmerite stdout v datoteko. Na ta način, ko printf piše v stdout, bo vsebina zapišemo v datoteko namesto prikazana na terminalu. To lahko storimo le, da z dodajanjem več, kot znak, ki mu sledi z imenom datoteke, z ukazom, ki jih uporabljamo za izvedbo našega programa. Torej, ne samo izvedbo. / Preusmeriti, lahko teči. / preusmeriti, nato pa več kot znak, ki mu sledi Ime datoteke, kot datoteka.txt. Poglejmo, kaj se zgodi. OK. Opazili boste, da tokrat ni bilo nič prikazan na terminalu, vendar nismo spremenili vsebino našega C program sploh. Pojdimo zdaj preučiti vsebino te mape, ls. V redu. Zdaj imamo novo datoteko v naš imenik, imenovan datoteka.txt, ki je ime datoteke imamo na voljo, ko sva tekla naši Preusmeritev programa. Odprimo se datoteka.txt. In tukaj lahko vidimo, da je stdout preusmerili od bila zapišejo v datoteko z imenom datoteka.txt. Torej, kaj je teči prejšnji ukaz še enkrat, ampak zagotavljanje različne vhodne tokrat. Ok. Oglejmo si na datoteka.txt zdaj. Tukaj lahko vidimo, da je bila datoteka prepisana, zato so naši prvotni vhod ni več tam. Če bomo namesto želite dodati v to datoteko, s čimer novi Vhod v nadaljevanju obstoječe vsebine spisa, smo lahko uporabite dve večji, kot znake, namesto samo enega. Poskusimo to. Zdaj, če smo odprli datoteka.txt spet vidimo, tako naših vhodne vrstice. V nekaterih primerih lahko želimo izločiti vse Rezultat našega programa. Namesto pisanju v datoteko in potem brisanje datoteke, ko sva končala z njo, lahko zapišemo, da posebna datoteka z imenom / dev / null. Če je kaj napisal, da dev/null-- / ali pa samo za kratek devnull - se samodejno izločeni. Torej misliš devnull kot črne luknje za svoje podatke. Torej, zdaj smo videli, kako je lahko večja kot znak preusmeriti stdout, da vidimo, kako je mogoče preusmeriti smo standard - ali s-t-d-in - primerljiva na standardni izhod. Medtem ko deluje kot printf pisati pozval potoku stdout, GetString in podobne funkcije brati iz potoka imenovano stdin, ki ga privzeto, je tok vtipkani na tipkovnici. Mi lahko preusmeri stdin z manj kot znak, ki mu sledi z imenom datoteke. Zdaj, namesto da bi od uporabnika vnos v spodnjem terminal, bo program odpre datoteko smo opredelili in uporabo njegove linije, kot vhod. Poglejmo, kaj se zgodi. Čudovito. V prvi vrstici datoteka.txt je bilo natisnjeno na terminal ker smo kliče GetString enkrat. Če bi imeli še en klic, da GetString v našem programu, Naslednja vrstica datoteka.txt bi bila uporabljena kot Vhod na ta poziv. Spet smo se ni spremenil našo C programa na vse. Mi smo le spremeniti, kako bi sistem deloval. In prav spomnim, smo se preusmerili stdout ne tokrat, tako da je izhod programa je bilo še vedno prikazano na terminalu. Lahko, seveda, preusmeriti tako stdin in stdout, kot je ta. Zdaj file2.txt vsebuje prvo linijo datoteka.txt. Torej, z uporabo teh subjektov, smo bili sposobni prebrati in pisati iz besedilnih datotek. Zdaj pa poglejmo, kako lahko uporabimo izhod enega programa, kot vhod v drug program. Torej, tukaj je še en preprost program, ki sem C so se tu imenuje hello.c. Kot lahko vidite, to preprosto izpiše "Hi tam! "uporabniku. Če želim preusmeriti uporabiti kot vhod izhod zdravo - drug program - Jaz bi se lahko prvič preusmerite stdout v pozdrav datoteki z imenom input.txt, preusmerite stdin za preusmeritev na isti Datoteka - input.txt. Tako lahko storim. / Zdravo> input.txt. Pritisnite Enter za izvedbo tega. Sledi. / Preusmeriti < input.txt in izvedbo tega. Tako bomo lahko skrajšajo to bit s podpičjem, ki omogoča nam teči dva ali več ukazov na isti liniji. Torej lahko rečem,. / Zdravo> input.txt, podpičje, . / Preusmeriti Final.txt. Torej, če bomo odprli final.txt, imamo točno to, kar smo bili iskanje: Seznam posebnih imen, po abecednem vrstnem redu, shrani v besedilno datoteko. Mimogrede, bi lahko tudi rekli nekako < students.txt | uniq> final.txt storiti natanko ista stvar, pri čemer vsak od subjektov, ki smo jih videli v ta video. Moje ime je Tommy, in to je CS50.