[Powered by Google Translate] TOMMY: Во ова видео, ќе учат за пренасочување и цевки. Досега, ние сме биле користење на функции како printf да излез на податоци до терминалот и функции како GetString да им се овозможи на корисникот да се обезбеди влез на нашите програма со користење на тастатура. Ајде брзо ги разгледаме во една програма која добива линија на влез од корисникот, а потоа излези. On-line 7, ние се прашува корисникот за стринг, и потоа на алинеја 8, ние сме тоа печатење назад. Да компајлирајте и извршете нашата програма. Велики. Низата ние се предвидени можеше да се слушне назад за нас во терминал. Ова се случи бидејќи printf функцијата напиша на поток нарекува стандарден излез, или е-т-d-надвор. Кога нешто е напишано во stdout, тоа е стандардно екранот од страна на терминалот. Па тоа е добро и добро, но што ако, наместо едноставно да прикажување на стринг, сакавме да го зачувате во датотека? На пример, ние можеби ќе сакате да се запамети токму она што нашите програма не кога ние го даде одредена влез подоцна. Еден пристап би бил да го направите ова во нашата Ц програма, користејќи некои посебни функции за пишување на датотеки кои ќе види во друг видео. Дури и полесно, сепак, ќе биде да се некако пренасочување stdout во датотека. На тој начин, кога printf пишува до stdout, содржината ќе да се запише датотека наместо екранот од страна на терминалот. Ние можеме да го прават токму тоа со додавање на поголема-од знак, по што следи од името на датотеката, на командната ние ги користиме за да се изврши нашата програма. Така, наместо едноставно извршување. / Пренасочување, можеме да се кандидира. / пренасочување, проследено со поголема од знак, проследено со името на датотеката, како file.txt. Ајде да видиме што се случува. ОК. Забележете дека овој пат, ништо не беше прикажана на терминалот, но ние не се менува содржината на нашите Ц програма на сите. Ајде сега испита содржината на овој директориум со ls. Во ред. Сега имаме нова датотека во нашите директориум наречен file.txt, што е името на датотеката ние испорачува кога ние трчаше нашиот Пренасочување програма. Да се ​​отвори file.txt. И тука, можеме да видиме дека stdout од пренасочување беше напишани на датотека наречена file.txt. Значи, да се кандидира на претходната команда повторно, но обезбедувањето на различни влезни тоа време. Во ред. Ајде да ги разгледаме во file.txt сега. Можеме да видиме тука дека датотеката е препишани, така и нашата оригиналниот влез не е таму веќе. Ако ние наместо да сакате да го додадете на оваа датотека, ставање на ново влез под постоечките содржината на датотеката, можеме да користат две поголема-од знаци наместо на само еден. Да се ​​обидеме тоа. Сега, ако ги отвориме file.txt повторно, можеме да видиме и од нашите влезни линии. Во некои случаи, можеби ќе сакате да ги отфрли сите производство на нашата програма. Наместо да пишувате на излез на датотека, а потоа бришење на датотеката кога ќе завршиш со тоа, ние може да напише на посебни фајл наречен / dev / null. Кога нешто е напишана / dev/null-- или само devnull за кратко - се автоматски избришани. Значи мислам на devnull како црна дупка за вашите податоци. Па сега што сум го видел како поголем од знакот може да се пренасочи stdout, ајде да видиме како можеме да пренасочи стандард во - или С-Т-d-во - аналоген на stdout. Додека функции како printf пишете на потокот наречен stdout, GetString и слични функции чита од поток наречен stdin, која, по правило, е поток на карактери напишани на тастатурата. Ние може да се пренасочи stdin користење на помалку од знак, по што следи од името на датотеката. Сега, наместо да се прашува корисникот за внесување на терминал, програмата ќе ја отворам датотеката ние наведени и употреба своите редови како влез. Ајде да видиме што се случува. Велики. На првата линија на file.txt е отпечатена во терминал затоа што ние сме повикувајќи GetString еднаш. Ако имавме уште еден повик да GetString во нашата програма, следната линија на file.txt ќе се користи како внесување на тој повик. Повторно, не сме пат е изменета нашата C програма на сите. Ние сме само менување на тоа како ние ја стартувате. И исто така се сеќавам, не сме пренасочени stdout тоа време, па излез на програмата се уште прикажани во терминал. Ние може, се разбира, пренасочување и stdin и stdout се допаѓа ова. Сега, file2.txt содржи првата линија на file.txt. Значи, со користење на овие оператори, ние сме во можност да чита и пишува од текстуални датотеки. Сега, ајде да видиме како можеме да го користиме излез на една програма како внесување на друга програма. Значи тука е уште една едноставна програма на C јас се тука наречен hello.c. Како што можете да видите, ова едноставно излези "Здраво таму! "до корисникот. Ако сакам пренасочи да се користи како влез излез на здраво - друга програма - Јас прв пат може да се пренасочи на stdout на здраво на датотека наречена input.txt, а потоа се сврти stdin на пренасочува кон истата датотека - input.txt. Значи можам да направам. / Здраво> input.txt. Притиснете Enter за да се изврши оваа. Проследено со. / Пренасочи < input.txt, и изврши тоа. Па ние може да го скрати овој малку со точка-запирка, што овозможува ни да се кандидира две или повеќе команди на иста линија. Па можам да кажам. / Здраво> input.txt, запирка, . / Пренасочи Final.txt. Значи, ако ние се отвори final.txt, имаме токму она што беа барате: листа на единствени имиња по азбучен ред, зачувани во текстуална датотека. Патем, ние исто така може да се рече вид < students.txt | Uniq> final.txt да го направите токму истото, со користење на секој од операторите видовме во оваа видео. Моето име е Томи, и ова е CS50.