[Powered by Google Translate] Tommy: Katika video hii, tutaweza kujifunza kuhusu imetuma na mabomba. Hadi sasa, tumekuwa kutumia kazi like printf kwa pato data terminal na kazi kama GetString kuruhusu user kutoa pembejeo kwa wetu programu kwa kutumia keyboard. Hebu haraka kuangalia mpango kwamba anapata mstari wa pembejeo kutoka kwa mtumiaji na kisha matokeo yake. On line 7, sisi ni uvuvio mtumiaji kwa kamba, na kisha juu ya mstari 8, sisi ni uchapishaji nyuma nje. Hebu kukusanya na kuendesha programu yetu. Mkuu. kamba sisi zinazotolewa yalirejewa nyuma na sisi katika terminal. Hii ilitokea kwa sababu kazi printf aliandika kwa mkondo kuitwa kiwango nje, au s-t-d-nje. Wakati kitu imeandikwa kwa stdout, ni kwa default visas kwa wastaafu. Basi hiyo ni vizuri wote na nzuri, lakini kile kama, badala ya tu kuonyesha kamba, sisi alitaka kuokoa kwa faili? Kwa mfano, sisi kutaka kukumbuka nini hasa wetu mpango alifanya wakati sisi akampa pembejeo fulani baadaye. Mmoja mkabala itakuwa kufanya hili katika mpango wetu C, kwa kutumia baadhi ya kazi maalum kwa ajili ya kuandika kwa files kwamba tutaweza kuona katika video nyingine. Hata rahisi, ingawa, itakuwa namna fulani redirect stdout na faili. Kwa njia hiyo, wakati printf anaandika kwa stdout, yaliyomo mapenzi kuandikwa na faili kuliko visas kwa wastaafu. Tunaweza kufanya hivyo tu kwa kuongeza ishara kubwa zaidi-kuliko, ikifuatiwa na jina la faili, kwa amri ya sisi kutumia ili kutekeleza mpango wetu. Hivyo, badala ya utekelezaji / redirect., Tunaweza kukimbia /. redirect, ikifuatiwa na zaidi ya ishara, ikifuatiwa na filename, kama file.txt. Hebu kuona nini kinatokea. OK. Taarifa kwamba wakati huu, hakuna kitu visas terminal, lakini hatuna iliyopita yaliyomo wetu C mpango wakati wote. Hebu sasa kuchunguza yaliyomo ya saraka hii na ls. Wote haki. Sisi sasa una faili mpya katika saraka yetu iitwayo file.txt, ambayo ni jina la faili sisi hutolewa wakati sisi mbio zetu Redirect mpango. Hebu kufungua file.txt. Na hapa, tunaweza kuona kwamba stdout nje ya redirect ilikuwa imeandikwa na faili inayoitwa file.txt. Basi hebu kukimbia amri ya awali tena, lakini kusambaza mbalimbali pembejeo wakati huu. Sawa. Hebu tuangalie file.txt sasa. Tunaweza kuona hapa kwamba faili imekuwa overwritten, hivyo wetu pembejeo awali si huko tena. Kama sisi badala wanataka append na faili hili, kuweka mpya pembejeo chini ya yaliyomo ya faili zilizopo, tunaweza kutumia wawili ishara kubwa zaidi-kuliko badala ya moja tu. Hebu jaribu hilo. Sasa, kama sisi kufungua file.txt tena, tunaweza kuona wote wa wetu pembejeo mistari. Katika baadhi ya matukio, sisi kutaka kuondokana yoyote pato la programu yetu. Badala ya kuandika pato kwa faili na kisha kufuta faili wakati sisi ni kufanyika kwa hiyo, tunaweza kuandika maalum faili inayoitwa / Dev / null. Wakati chochote imeandikwa kwa / dev/null-- au tu kwa kifupi devnull - ni moja kwa moja kuondolewa. Hivyo kufikiria devnull kama shimo nyeusi kwa data zako. Hivyo sasa tumeona jinsi ishara kubwa zaidi kuliko unaweza redirect stdout, hebu angalia jinsi gani tunaweza kuelekeza kiwango katika - s-au t-d-katika - analog ya stdout. Wakati kazi kama printf kuandika mkondo kuitwa stdout, GetString na majukumu sawa kusoma kutoka mkondo kuitwa stdin, ambayo, kwa default, ni mkondo wa wahusika typed katika keyboard. Tunaweza redirect stdin kutumia chini ya ishara, ikifuatiwa na jina la faili. Sasa, badala ya uvuvio mtumiaji kwa ajili ya pembejeo katika terminal, programu hiyo kufungua faili sisi maalum na kutumia mistari yake kama pembejeo. Hebu kuona nini kinatokea. Mkuu. mstari wa kwanza wa file.txt limechapishwa kwa terminal kwa sababu sisi ni wito GetString mara moja. Kama tulikuwa na mwingine wito kwa GetString katika mpango wetu, line ya pili ya file.txt ingekuwa kutumika kama pembejeo kwa wito huo. Tena, sisi si iliyopita C mpango wetu wakati wote. Sisi ni tu kubadilisha jinsi sisi kukimbia. Na pia kumbuka, sisi si itaelekezwa stdout wakati huu, hivyo pato la programu hiyo bado kuonyeshwa katika terminal. Tunaweza, bila shaka, redirect wote stdin na stdout kama hii. Sasa, file2.txt ina mstari wa kwanza wa file.txt. Hivyo, kwa kutumia kampuni za hizi, tumekuwa na uwezo wa kusoma na kuandika kutoka Nakala files. Sasa, hebu angalia jinsi gani tunaweza kutumia pato la programu moja kama pembejeo kwa mpango mwingine. Hivyo hapa ni rahisi mwingine C mpango mimi kuwa hapa aitwaye hello.c. Kama unaweza kuona, hii tu matokeo "Hi huko "! kwa mtumiaji. Kama nataka redirect kwa kutumia pembejeo kama pato la Hello - mpango mwingine - Mimi nilikuwa kwanza redirect stdout ya hello faili inayoitwa input.txt, kisha kuelekeza stdin ya redirect kwa hiyo faili - input.txt. Hivyo siwezi kufanya / hujambo> input.txt.. Vyombo vya habari Enter nitafanya hili. Ikifuatiwa na. / Redirect < input.txt, na nitafanya hivyo. Hivyo tunaweza kufupisha hii kidogo kwa semicolon, ambayo inaruhusu sisi kukimbia amri mbili au zaidi juu ya mstari huo. Hivyo naweza kusema,. / Hujambo> input.txt, semicolon, . / Redirect Final.txt. Hivyo, kama sisi kufungua final.txt, tuna nini hasa sisi walikuwa kuangalia kwa: orodha ya majina ya kipekee katika herufi, kuokolewa na faili asilia. Kwa njia, sisi pia inaweza kuwa alisema aina < students.txt | uniq> final.txt kufanya hasa kitu kimoja, kutumia kila moja ya kampuni za tumeona katika hii video. Jina langu ni Tommy, na hii ni CS50.