[Powered by Google Translate] TOMMY: Ebben a videóban, akkor megtudjuk, átirányítása és a csövek. Eddig mi már a funkciók, mint a printf kimeneti adatok a terminál és a funkciók, mint a getString , hogy lehetővé tegye a felhasználó számára, hogy a mi hogy járuljon program segítségével a billentyűzetet. Menjünk gyorsan vessünk egy pillantást a program, hogy lesz egy sor bemenet a felhasználó, és azután kiadja azt. On line 7, mi a felhasználó megkérdezése egy string, és majd line 8, mi nyomtatás vissza ki. Nézzük fordításához és futtatásához a programot. Remek. A string amit átadott visszhangozta vissza nekünk a terminálon. Ez azért történt, mert a printf függvény írt egy áram a Standard ki, vagy az S-terc-d-ki. Ha valami van írva az stdout-ra, ez alapértelmezés szerint jelenik meg a terminál. Szóval ez mind szép és jó, de mi van, ha ahelyett, hogy egyszerűen megjelenítő string, akartuk menteni egy fájlba? Például, lehet, hogy emlékszik pontosan, mi a program volt, amikor adott neki egy bizonyos input később. Az egyik lehetőség az lenne, ha ezt a mi C program segítségével néhány speciális funkciók írásban fájlokat, hogy mi lesz lásd másik videó. Még egyszerűbb, bár az lenne, hogy valahogy átirányítás stdout fájlba. Így, amikor a printf ír stdout, a tartalom lesz kell egy fájlba helyett jelenik meg a terminál. Meg tudjuk csinálni csak, hogy hozzáadásával nagyobb-mint jel, majd egy fájl nevét, a parancs használjuk végrehajtani a programot. Tehát ahelyett, hogy egyszerűen végrehajtó. / Redirect tudjuk fuss. / redirect, majd egy nagyobb jel, majd a filename, mint fájl.txt. Lássuk, mi történik. OK. Figyeljük meg, hogy ebben az időben, semmi sem jelenik meg a terminál, de nem módosították a tartalmát a C program egyáltalán. Nézzük most vizsgálja meg a tartalmát könyvtár ls. Rendben van. Most már van egy új fájlt a mi nevű könyvtárba file.txt, amely a fájl neve is szállított, amikor futott a Átirányítás program. Nyissuk ki file.txt. És itt, azt láthatjuk, hogy a stdout az átirányítás volt a fájlba nevű file.txt. Szóval futtassa az előző parancs újra, de ellátása különböző bemeneti ebben az időben. Oké. Vessünk egy pillantást file.txt most. Láthatjuk itt, hogy a fájl már felülírt, így a eredeti bemenet nincs ott többé. Ha ehelyett szeretnénk hozzáfűzni, hogy ezt a fájlt, amivel az új input alatt a létező fájl tartalmát, tudjuk használni a két nagyobb, mint a jelek egy helyett. Próbáljuk ezt. Most, ha nyitunk file.txt ismét azt látjuk, mind a mi bemeneti vonalak. Bizonyos esetekben talán szeretnénk elvetéséhez kimenete a program. Ahelyett, hogy írja a kimenetet egy fájlba, majd törli a fájlt, ha végeztünk vele, tudunk írni egy speciális fájl neve / dev / null. Ha valami van írva, hogy / dev/null-- vagy csak devnull rövid - akkor az automatikusan elveti. Szóval szerintem a devnull, mint egy fekete lyuk az adatokat. Tehát most láttuk, hogy a nagyobb jel lehet átirányítani stdout, lássuk, hogyan tudjuk irányítani szabvány - vagy az S-terc-d-in - Az analóg stdout. Míg a funkciók, mint a printf írj a patak neve stdout, getString és hasonló funkciók olvasni a patak nevű stdin, amely alapértelmezés szerint a patak beírt karakterek a billentyűzeten. Mi lehet átirányítani stdin a kisebb jel, majd egy fájlnevet. Most ahelyett, hogy a felhasználó megkérdezése a bemenet a terminál, a program megnyitja a fájlt, amit megadott, és használja a vonalak bemenet. Lássuk, mi történik. Remek. Az első sor a file.txt lett nyomtatva a terminálra mert mi hív getString egyszer. Ha még egy hívást a getString a mi programban, a következő sor file.txt volna használják input e hívást. Ismét mi nem módosítottuk C program egyáltalán. Mi csak a változó, hogyan futtatni. És ne feledd, még nem átirányított stdout ebben az időben, így a program kimenete még jelenik meg a terminálon. Tudjuk, persze, átirányítás mindkét stdin és stdout kedveli ezt. Most file2.txt tartalmazza az első sorban a file.txt. Szóval, ezekkel a szereplők, mi már tud olvasni, és levelet szöveges fájlokat. Most lássuk, hogyan tudjuk használni a kimenet egy program a bemenet egy másik program. Tehát itt egy egyszerű C program I már itt az úgynevezett hello.c. Mint látható, ez egyszerűen kimenetek "Hi ott! "a felhasználó számára. Ha akarom átirányítást használni input a kimenő hello - Egy másik program - Tudtam elsőnek a stdout a hello nevű fájlt bemenet.txt, majd irányítsa át a stdin az átirányítás ugyanezen file - bemenet.txt. Szóval én tehetek. / Hello> bemenet.txt. Nyomja meg az Enter végrehajtani ezt. Majd. / Redirect < bemenet.txt, és végrehajtja azt. Így tudjuk rövidíteni ezt egy kicsit pontosvesszővel, amely lehetővé teszi számunkra, hogy fut két vagy több parancs ugyanabban a sorban. Így azt mondhatom,. / Hello> bemenet.txt, pontosvessző, . / Redirect Final.txt. Tehát, ha nyit final.txt, mi pontosan mi voltunk Keresés: listáját egyedi nevek betűrendben, mentett egy szöveges fájl. By the way, mi is mondhattam volna sort < students.txt | uniq> final.txt, hogy pontosan ugyanaz a dolog, felhasználva az egyes szereplők láttunk ezt a videót. A nevem Tommy, és ez CS50.