[Powered by Google Translate] Tommy: Sa video na ito, gagamitin namin malaman ang tungkol sa pag-redirect at pipe. Sa ngayon, kami na ginagamit function bang printf sa output data sa terminal at pag-andar tulad ng GetString upang payagan ang mga gumagamit upang magbigay ng input sa aming programa gamit ang keyboard. Sabihin mabilis na kumuha ng hitsura sa isang programa na ay nakakakuha ng isang linya ng input mula sa user at pagkatapos output ito. Sa linya 7, kami ay pagdikta sa gumagamit para sa isang string, at sa linya 8, kami ay pag-print ito pabalik out. Natin makatipon at patakbuhin ang aming programa. Mahusay. Ang string na namin ibinigay ay echoed muli sa amin sa terminal. Nangyari ito dahil ang printf function na sinulat ni sa isang stream na tinatawag na standard out, o s-t-d-out. Kapag ang isang bagay ay nakasulat sa stdout, ito ay sa pamamagitan ng default ipinapakita ng terminal. Kaya na ang lahat ng mahusay at magandang, ngunit kung ano kung, sa halip na lamang pagpapakita ng string, gusto naming i-save ito sa isang file? Halimbawa, maaari naming nais mong matandaan eksakto kung ano ang aming programa ginawa kapag ibinigay namin ito sa isang partikular na input sa paglaon. Isa diskarte ay upang gawin ito sa aming programa sa C, gamit ang ilang mga espesyal na function para sa pagsusulat sa mga file na bibigyan namin makita sa isa pang video. Mas madali, bagaman, ay sa paanuman redirect ang stdout sa isang file. Sa ganoong paraan, kapag printf nagsusulat sa stdout, ang mga nilalaman ay na nakasulat sa isang file sa halip na ipinapakita ng terminal. Maaari naming gawin lamang na sa pamamagitan ng pagdaragdag ng isang mas mataas-kaysa-sign, sinusundan ng isang pangalan ng file, ang command na ginagamit namin upang magsagawa ng aming programa. Kaya, sa halip na lamang execute. / Redirect, maaari naming tumakbo. / pag-redirect, sinusundan ng isang mas malaki kaysa sa pag-sign, na sinusundan ng filename, tulad ng file.txt. Natin makita kung ano ang mangyayari. OK. Pansinin na ang oras na ito, walang ay ipinapakita sa terminal, ngunit hindi namin nabago ang mga nilalaman ng aming mga C programa sa lahat. Natin na ngayong suriin ang mga nilalaman ng direktoryong ito sa ls. Ayos lang. Ngayon kami ay may isang bagong file sa aming direktoryo na tinatawag file.txt, na ang pangalan ng file na tinustusan namin kapag tumakbo namin ang aming Pag-redirect ng programa. Natin buksan up file.txt. At dito, maaari naming makita na ang stdout ng pag-redirect ay nakasulat sa file na tinatawag na file.txt. Kaya sabihin muling patakbuhin ang nakaraang utos, ngunit ang pagbibigay ng input sa iba't ibang oras na ito. Okay. Natin tingnan sa file.txt ngayon. Maaari naming makita dito na ang file ay mapapatungan, kaya ang aming orihinal na input ay hindi doon ngayon. Kung gusto namin sa halip upang isama sa ang file na ito, paglalagay ng bagong input sa ibaba ng umiiral na mga nilalaman ng file, maaari naming gamitin ang dalawang mas malaki kaysa sa mga palatandaan sa halip ng isa lamang. Natin subukan na. Ngayon, kung buksan namin file.txt muli, maaari naming makita ang parehong ng aming input linya. Sa ilang mga kaso, maaari naming gusto mong itapon ang anumang output ng aming programa. Kaysa sa pagsusulat ang output sa isang file at pagkatapos pagtanggal ang file kapag tapos na kami dito, maaari naming magsulat ng isang espesyal na file na tinatawag / dev / null. Kapag ang anumang ay nakasulat sa / dev/null-- o devnull para sa maikling - awtomatikong ito ay itinapon na. Kaya sa tingin ng devnull bilang isang black hole para sa iyong data. Kaya ngayon nasaksihan namin kung paano maaaring mag-redirect ang mas malaki kaysa sa pag-sign stdout, sabihin makita kung paano namin pag-redirect standard sa - o s-t-d-in - ang analogue ng stdout. Habang function gusto printf sumulat sa stream na tinatawag na stdout, GetString at mga katulad na function na basahin mula sa stream tinatawag stdin, na, sa pamamagitan ng default, ang stream ng -type ang mga character sa keyboard. Maaari naming pag-redirect ng stdin gamit ang mas mababa sign, sinusundan ng isang filename. Ngayon, sa halip na pagdikta sa gumagamit para sa input sa terminal, ang programa ng buksan ang file namin tinukoy at gamitin nito linya bilang input. Natin makita kung ano ang mangyayari. Mahusay. Ang unang linya ng file.txt ay naka-print sa terminal dahil kami ay pagtawag GetString sabay-sabay. Kung nagkaroon kami ng isa pang tawag sa GetString sa aming programa, ang susunod na linya ng file.txt ay nagamit na bilang input sa tawag na. Muli, hindi namin nabago ang aming C programa sa lahat. Lamang namin ang pagbabago kung paano namin ito patakbuhin. At tandaan din, hindi pa namin na-redirect sa stdout oras na ito, kaya ang output ng programa ay pa rin ipinapakita sa terminal. Maaari naming, siyempre, i-redirect ang parehong stdin at stdout tulad nito. Ngayon, file2.txt naglalaman ng unang linya ng file.txt. Kaya, gamit ang mga operator na ito, kami na basahin at sumulat mula sa mga file ng teksto. Ngayon, sabihin makita kung paano namin maaaring gamitin ang output ng isang programa tulad ng ang input sa isa pang program. Kaya narito ang isa pang simpleng programa C ko na tinatawag dito hello.c. Tulad ng iyong nakikita, ito lamang output "Hi doon! "sa user. Kung gusto kong pag-redirect upang gamitin bilang input ang output ng halo - isa pang program - Maaaring ako unang pag-redirect sa stdout ng halo sa isang file na tinatawag na input.txt, pagkatapos ay pag-redirect ang stdin ng pag-redirect sa na parehong file - input.txt. Kaya ang maaari kong gawin / kumusta> input.txt. Pindutin ang Enter upang maisagawa ito. Sinusundan ng. / Pag-redirect < input.txt, at execute na. Upang maaari naming paikliin ito bit na may semicolon, na nagpapahintulot sa amin upang patakbuhin ang dalawa o higit pang mga utos sa parehong linya. Kaya ang maaari kong sabihin,. / Kumusta> input.txt, semicolon, . / Pag-redirect Final.txt. Kaya, kung buksan namin hanggang final.txt, mayroon kaming kung ano mismo ang kami ay naghahanap para sa: isang listahan ng mga natatanging pangalan sa alpabetikong pagkakasunod-sunod, na naka-save sa isang text file. Sa pamamagitan ng paraan, din namin ay maaaring sinabi-uuri < students.txt | uniq> final.txt gawin eksakto ang parehong bagay, gamit ang bawat isa ng ang mga operator na nakakita kami ang video na ito. Ang pangalan ko ay Tommy, at ito ay CS50.