[Powered by Google Translate] TOMMY: U ovom video, mi ćemo naučiti o preusmjeravanje i cijevi. Do sada smo bili pomoću funkcije poput printf na izlazni podaci na terminalu i funkcije poput GetString kako bi se omogućilo korisniku da omogućavaju ulaz na naše Program pomoću tipkovnice. Ajmo brzo pogledati program koji dobiva liniju ulaz od korisnika, a zatim ga šalje. Na liniji 7, mi smo pitajući korisnika za niz, a zatim na liniji 8, mi smo ga ispisujete natrag. Ajmo sastaviti i pokrenuti naš program. Izvrsno. Niz pod uvjetom da je reagirao i natrag da nas kontaktirate na terminalu. To se dogodilo zato što je printf funkcija pisao tok naziva standardnom van, ili s-t-d-out. Kad je nešto napisano na stdout, to je po defaultu prikazati terminala. Tako da je sve dobro i dobro, ali što ako, umjesto da jednostavno prikazujući niz, htjeli smo ga spremiti u datoteku? Na primjer, možda bismo željeli da se točno sjetiti što naš Program je kad smo dali poseban ulaz kasnije. Jedan od pristupa bio bi to učiniti u našoj C programu, pomoću neke posebne funkcije za pisanje u datoteke koje ćemo vidjeti u drugom videu. Čak i lakše, iako, da bi se nekako preusmjeravanje stdout u datoteku. Na taj način, kada printf piše na stdout, sadržaj će biti napisan na datoteku umjesto prikazati terminala. Možemo učiniti samo da dodavanjem veće od znaka, zatim po nazivu datoteke, naredbi možemo koristiti za izvršavanje naš program. Dakle, umjesto da jednostavno izvršenja. / Preusmjeravanje, možemo pokrenuti. / preusmjeravanje, nakon čega slijedi veći od znaka, nakon čega slijedi filename, kao file.txt. Idemo vidjeti što se događa. OK. Primjetite da ovaj put, ništa nije prikazana na terminalu, ali nismo izmjena sadržaja našeg C program uopće. Idemo sada ispitati sadržaj ovaj direktorij sa ls. U redu. Mi sada imamo novu datoteku u našem imeniku zove file.txt, koje je ime datoteke smo dobili kada smo trčali naš Preusmjeravanje program. Ajmo otvoriti file.txt. I ovdje, možemo vidjeti da je stdout od preusmjeriti bio napisan na datoteku pod nazivom file.txt. Tako ćemo pokrenuti prethodne naredbe opet, ali opskrbu drukčiji ulaz ovaj put. Ok. Idemo pogledati file.txt sada. Možemo vidjeti da se ovdje datoteka je prepisan, tako naša Izvorni ulaz ne postoji više. Ako smo umjesto želite dodati u ovoj datoteci, stavljajući novi ulazni ispod postojećih sadržaja datoteke, možemo koristiti dvije veće od znakova umjesto samo jednog. Pokušajmo. Sada, ako smo otvorili file.txt opet, možemo vidjeti i našeg ulazne linije. U nekim slučajevima, možda bismo željeli odbaciti bilo izlaz našeg programa. Umjesto pisanja izlaz u datoteku, a zatim brisanje datoteka kad završimo s njim, možemo pisati da posebna file naziva / dev / null. Kada se nešto napisano na / dev/null-- ili samo devnull za kratko - to automatski odbacuju. Dakle, mislim devnull kao crnu rupu za svoje podatke. Dakle, sada smo vidjeli kako je veća nego znak može preusmjeriti stdout, neka je vidjeti kako možemo preusmjeriti standard u - ili s-t-d-u - analogni od stdout. Iako djeluje kao printf pisati potoka zove stdout, GetString i slične funkcije čitati iz potoka zove stdin, koji, po defaultu, je tok znakova upisali na tipkovnici. Možemo preusmjeriti stdin koristeći manje nego znak, slijedi po datoteke. Sada, umjesto pitajući korisnika za ulaz u hotelu The terminala, program će otvoriti datoteku smo naveli i koristiti njegove linije kao ulaz. Idemo vidjeti što se događa. Izvrsno. U prvom redu file.txt je tiskan na terminal jer smo zovete GetString jednom. Ako smo imali još jedan poziv na GetString u našem programu, Sljedeći linija file.txt bi bila korištena kao Ulaz na taj poziv. Opet, nismo izmjena našu C programa uopće. Mi samo Mijenjamo kako ga pokrenuti. I također sjetiti, nismo preusmjereni stdout ovaj put, tako da je izlaz iz programa bio je još prikazana na terminalu. Možemo, naravno, preusmjeravanje i stdin i stdout ovako. Sada, file2.txt sadrži prvu liniju file.txt. Dakle, pomoću tih operatora, mi smo bili u mogućnosti čitati i pisati iz tekstualne datoteke. Sada, neka je vidjeti kako možemo koristiti izlaz jednog programa kao Ulaz na drugom programu. Dakle, ovdje je još jedan jednostavan C program sam su ovdje zove hello.c. Kao što možete vidjeti, to jednostavno izlazi "Bok tamo! "za korisnika. Ako želim preusmjeriti koristiti kao ulaz izlaz halo - drugi program - Prvi put sam mogao preusmjeriti stdout od hello datoteku naziva input.txt, zatim preusmjerite stdin od preusmjeriti na taj isti file - input.txt. Dakle, ja mogu učiniti. / Halo> input.txt. Pritisnite Enter za izvršenje ovo. Slijedi. / Preusmjeravanje < input.txt, i izvršiti to. Tako možemo skratiti ovo malo sa zarezom, koji omogućuje nas pokrenuti dva ili više naredbi na istoj liniji. Dakle, ja mogu reći,. / Halo> input.txt, zarez, . / Preusmjeravanje Final.txt. Dakle, ako ćemo otvoriti final.txt, imamo točno ono što smo bili u potrazi za: popis jedinstvenih imena po abecednom redu, spremiti u tekstualnu datoteku. Usput, mi također mogli rekao svojevrsno < students.txt | uniq> final.txt učiniti točno ista stvar, koristeći svaku od operatera smo vidjeli u ovaj video. Moje ime je Tommy, a ovo je CS50.