[Powered by Google Translate] TOMMY: I denne videoen, vil vi lære om omdirigere og rør. Så langt har vi brukt funksjoner som printf til utdata til terminalen og funksjoner som GetString å tillate brukeren å gi innspill til vårt programmet ved hjelp av tastaturet. La oss raskt ta en titt på et program som får en linje av input fra brukeren, og deretter utganger det. På linje 7, vi spørre brukeren for en streng, og deretter på linje 8, vi skriver den ut igjen. La oss kompilere og kjøre programmet vårt. Flott. Strengen vi gitt var echoed tilbake til oss på terminalen. Dette skjedde fordi printf funksjonen skrev til en bekk kalt standard ut, eller s-t-d-out. Når noe er skrevet til stdout, er det som standard vises av terminalen. Så det er vel og bra, men hva om, i stedet for bare viser strengen, ønsket vi å lagre den til en fil? For eksempel kan vi ønsker å huske nøyaktig hva våre Programmet gjorde da vi ga det en bestemt inngang senere. En tilnærming ville være å gjøre dette i vår C-program ved hjelp noen spesielle funksjoner for å skrive til filer som vi vil se i en annen video. Enda enklere, skjønt, ville være å liksom omdirigere stdout til en fil. På den måten når printf skriver til stdout, innholdet vil bli skrevet til en fil i stedet vises av terminalen. Vi kan gjøre akkurat det ved å legge til en større-enn-tegn, etterfulgt ved et filnavn, til kommandoen bruker vi til å gjennomføre vårt program. Så, i stedet for bare å kjøre. / Redirect, kan vi kjøre. / redirect, etterfulgt av en større enn tegn, etterfulgt av filnavn, som file.txt. La oss se hva som skjer. OK. Legg merke til at denne tiden ble noe som vises i terminalen, men vi har ikke endret innholdet i vår C-program i det hele tatt. La oss nå undersøke innholdet i denne katalogen med ls. OK. Vi har nå en ny fil i katalogen vår som heter file.txt, som er filnavnet vi levert da vi kjørte våre Omadresser program. La oss åpne opp file.txt. Og her kan vi se at stdout av omdirigere var skrevet til filen som heter file.txt. Så la oss kjøre den forrige kommandoen igjen, men leverer en annen inngang denne gangen. Okay. La oss ta en titt på file.txt nå. Vi ser her at filen er overskrevet, så vår opprinnelige inngangen er ikke der lenger. Dersom vi i stedet ønsker å føye til denne filen, setter den nye innspill under det eksisterende innholdet i filen, kan vi bruke to større-enn tegn i stedet for bare én. La oss prøve det. Nå, hvis vi åpner file.txt igjen, kan vi se både av våre innspill linjer. I noen tilfeller kan vi ønsker å forkaste ethvert produksjon av vårt program. Snarere enn å skrive ut til en fil og deretter slette filen når vi er ferdig med det, kan vi skrive et særskilt fil som heter / dev / null. Når noe er skrevet til / dev/null-- eller bare devnull for kort - den automatisk kassert. Så tenk på devnull som et svart hull for dine data. Så nå har vi sett hvordan større enn-tegn kan omdirigere stdout, la oss se hvordan vi kan omdirigere standard i - eller s-t-d-i - den analog stdout. Mens funksjoner som printf skrive til bekk kalt stdout, GetString og lignende funksjoner lese fra bekken kalt stdin, som standard, er strømmen av tegn skrevet på tastaturet. Vi kan omdirigere stdin med mindre enn-tegn, etterfulgt av et filnavn. Nå, i stedet for å spørre brukeren om innspill på terminal, vil et program åpne filen vi spesifisert og bruke linjene som input. La oss se hva som skjer. Flott. Den første linjen av file.txt er trykt til terminalen fordi vi kaller GetString gang. Hvis vi hadde et annet kall til GetString i vårt program, det neste linje av file.txt ville ha blitt brukt som innspill til samtalen. Igjen har vi ikke endret våre C-program i det hele tatt. Vi bare endrer hvordan vi driver det. Og også huske, vi har ikke omdirigert stdout denne gangen, slik at produksjonen av programmet var fortsatt vises på terminalen. Vi kan selvsagt omdirigere både stdin og stdout som dette. Nå inneholder file2.txt den første linjen i file.txt. Så ved hjelp av disse operatørene, har vi vært i stand til å lese og skrive fra tekstfiler. Nå, la oss se hvordan vi kan bruke resultatet av ett program som inngangen til et annet program. Så her er et annet enkelt C-program jeg har her kalt hallo.c. Som du kan se, utganger dette rett og slett "Hei det! "til brukeren. Hvis jeg vil omdirigere bruke som input utgang av hei - et annet program - Jeg kunne først omdirigere stdout av hei til en fil som heter input.txt, deretter omdirigere stdin av omdirigere til den samme file - input.txt. Så jeg kan gjøre. / Hallo> input.txt. Trykk Enter for å utføre dette. Etterfulgt av. / Redirect < input.txt, og gjennomføre det. Så vi kan forkorte dette litt med et semikolon, som lar oss å kjøre to eller flere kommandoer på samme linje. Så jeg kan si,. / Hallo> input.txt, semikolon, . / Redirect Final.txt. Så hvis vi åpner opp final.txt, har vi nøyaktig hva vi var leter etter: en liste over unike navn i alfabetisk rekkefølge, lagret i en tekstfil. Forresten, vi også kunne ha sagt slags < students.txt | uniq> final.txt å gjøre akkurat det samme, med hvert av de operatørene vi har sett i denne videoen. Mitt navn er Tommy, og dette er CS50.