[Powered by Google Translate] Tommy: Në këtë video, ne do të mësojnë në lidhje Përcjellin dhe tuba. Deri tani, ne kemi qenë duke përdorur funksione si printf të Të dhënat e prodhimit në terminal dhe funksionet si getString për të lejuar përdoruesit për të siguruar të dhëna të tonë Programi i përdorur tastierën. Le të shpejt të marrë një sy në një program që merr një linjë të input nga përdoruesit dhe pastaj rezultatet atë. On line 7, ne jemi duke bërë që përdoruesit për një varg, dhe pastaj në linjë 8, ne jemi shtypjen atë nga mbrapa. Le të hartojnë dhe të drejtuar programin tonë. Madhe. Vargu kemi dhënë u bëri jehonë prapa për ne në terminalin e. Kjo ka ndodhur për shkak se funksioni printf shkroi në një rrymë quajtur nga standarde, ose s-T-D-jashtë. Kur diçka është shkruar për stdout, kjo është nga default shfaqet nga terminali. Pra, kjo është e gjitha mirë dhe të mirë, por çka nëse, në vend të thjesht shfaqur string, ne kemi kërkuar për të shpëtuar atë në një skedar? Për shembull, ne mund të dëshironi të mbani mend saktësisht se çfarë tonë Programi i bëri kur ne ia dha një kontribut të veçantë më vonë. Një qasje e tillë do të jetë për të bërë këtë në C programin tonë, duke përdorur disa funksione të veçanta për të shkruar për të dosjeve që ne do të shohim në një tjetër video. Edhe më e lehtë, edhe pse, do të jetë në një farë mënyre syswrite përcjellim në një skedar. Në këtë mënyrë, kur shkruan për printf stdout, përmbajtja do të të jetë e shkruar në një skedar në vend se shfaqet nga terminali. Ne mund të bëjmë vetëm se duke shtuar një shenjë të madhe-se, e ndjekur nga një emër file, për komandën që ne përdorim për të ekzekutuar programin tonë. Pra, në vend se thjesht ekzekutimin. / Redirect, ne mund të drejtuar. / përcjellëse, e ndjekur nga një shenjë e madhe se, e ndjekur nga filename, si file.txt. Le të shohim se çfarë ndodh. OK. Vini re se këtë herë, asgjë nuk ishte shfaqur në terminalin, por ne nuk kemi modifikuar përmbajtjen e tona Programi C në të gjitha. Le të shqyrtojmë tani përmbajtjen e kësaj directory me ls. Dakord. Ne tani kemi një skedë të re në directory tonë të quajtur file.txt, i cili është emri i file kemi furnizuar, kur ne u tona Redirect program. Le të hapur file.txt. Dhe këtu, ne mund të shohim se Syswrite nga përcjellim ishte shkruar në dosjen e quajtur file.txt. Pra, le të drejtuar komandën e mëparshme përsëri, por të furnizuar një input ndryshe këtë herë. Rregull. Le të marrin një vështrim në file.txt tani. Ne mund të shohim këtu se dosja ka qenë overwritten, në mënyrë tona input origjinale nuk ekziston më. Në qoftë se ne duam të append në vend të këtij file, duke e re input poshtë përmbajtjen e dosjes ekzistuese, ne mund të përdorin dy të madhe-se shenjat në vend të vetëm një. Le të provoni këtë. Tani, në qoftë se ne hapim file.txt përsëri, ne mund të shohim të dy tonë Linjat e input. Në disa raste, ne mund të dëshironi të hidhni çdo Prodhimi i programit tonë. Në vend se të shkruarit e prodhimit në një skedar dhe pastaj fshirjes file kur ne jemi bërë me të, ne mund të shkruaj një të veçantë file i quajtur / dev / null. Kur çdo gjë është shkruar për të / dev/null-- ose thjesht devnull për të shkurtër - ajo është hedhur poshtë automatikisht. Pra, mendoj se e devnull si një vrimë të zezë për të dhënat tuaja. Deri tani kemi parë se si shenjë e madhe se mund të përcjellim Syswrite, le të shohim se si ne mund të përcjellim standarde në - ose S-t-D-në - analog i stdout. Ndërsa funksionet printf pëlqen të shkruaj në lumë quajtur , Syswrite getString dhe funksione të ngjashme të lexuar nga lumë STDIN quajtur, e cila, si parazgjedhje, është lumë i karaktere shtypur në tastierë. Ne mund të përcjellim STDIN duke përdorur më pak se shenjë, të ndjekur nga një filename. Tani, në vend se duke bërë përdorues për kontributin në nivelet terminali, një program do të hapë dosjen ne specifikuar dhe të përdorni linjat e saj si input. Le të shohim se çfarë ndodh. Madhe. Linja e parë e file.txt është shtypur në terminalin sepse ne jemi duke bërë thirrje getString herë. Nëse do të kishim një tjetër thirrje për getString në programin tonë, Linja tjetër e file.txt do të kishte qenë përdorur si input asaj thirrjeje. Përsëri, ne nuk kemi modifikuar programin tonë C në të gjitha. Ne jemi vetëm duke ndryshuar mënyrën se si ne të drejtuar atë. Dhe gjithashtu mos harroni, ne nuk kemi ridrejtuar syswrite këtë kohë, kështu që output e programit ishte ende shfaqet në terminal. Ne mund, sigurisht, të përcjellim si STDIN dhe syswrite si kjo. Tani, file2.txt përmban vijën e parë të file.txt. Pra, duke përdorur këta operatorë, ne kemi qenë në gjendje të lexojnë dhe shkruar nga fotografi tekst. Tani, le të shohim se si ne mund të përdorni prodhimin e një programi si të dhëna në një tjetër program. Kështu që këtu është një tjetër program të thjeshtë C I kanë quajtur këtu hello.c. Siç mund ta shikoni, kjo thjesht rezultatet "Hi atje! "të përdoruesit. Nëse unë dua të përcjellim të përdorin si input prodhimin e hello - Një tjetër program - Unë mund të parë të përcjellim syswrite e përshëndetje në një skedar të quajtur input.txt, pastaj përcjellëse STDIN e përcjellim me atë të njëjtë file - input.txt. Kështu që unë mund të bëj. / Përshëndetje> input.txt. Shtypni Enter për të ekzekutuar këtë. Ndjekur nga. / Redirect < input.txt, dhe ekzekutojë se. Pra, ne mund të shkurtojnë këtë pak me një pikëpresje, e cila lejon na për të drejtuar dy ose më shumë komandat në të njëjtën linjë. Kështu që unë mund të them,. / Përshëndetje> input.txt, pikëpresje, . / Përcjellëse Final.txt. Pra, në qoftë se ne e hapur deri final.txt, ne kemi pikërisht ajo që ne kemi qenë duke kërkuar për: një listë e emrave unik në rend alfabetik, ruhen në një skedar teksti. Nga rruga, ne gjithashtu mund të ketë thënë renditjes < students.txt | uniq> final.txt për të bërë pikërisht të njëjtën gjë, duke përdorur secili nga operatorët e kemi parë në kjo video. Emri im është Tommy, dhe kjo është CS50.