[Powered by Google Translate] TOMMY: Yn y fideo, byddwn yn dysgu am ailgyfeirio a phibellau. Hyd yn hyn, rydym wedi bod yn defnyddio swyddogaethau hoffi printf i data allbwn i'r derfynell a swyddogaethau fel GetString er mwyn caniatáu i'r defnyddiwr i roi mewnbwn i'n rhaglen gan ddefnyddio bysellfwrdd. Gadewch i ni yn gyflym yn cymryd golwg ar raglen sy'n cael llinell o mewnbwn gan y defnyddiwr ac yna allbynnau hynny. Ar llinell 7, rydym yn annog y defnyddiwr i gael llinyn, ac yn Yna, ar llinell 8, rydym yn argraffu yn ôl allan. Gadewch i ni lunio a rhedeg ein rhaglen. Great. Mae'r llinyn rydym yn darparu Ategwyd ôl i ni yn y derfynfa. Digwyddodd hyn oherwydd bod y swyddogaeth printf ysgrifennodd i ffrwd galw allan safonol, neu s-t-d-allan. Pan fydd rhywbeth yn ei ysgrifennu i stdout, mae'n ddiofyn a ddangosir gan y derfynell. Felly dyna i gyd yn dda ac yn dda, ond beth os, yn hytrach na dim ond arddangos y llinyn, rydym yn awyddus i gadw ar ffeil? Er enghraifft, efallai y byddwn eisiau cofio yn union beth yw ein rhaglen oedd pan fyddwn rhoddodd mewnbwn benodol yn hwyrach. Un dull fyddai gwneud hyn yn ein C rhaglen, gan ddefnyddio rhai swyddogaethau arbennig ar gyfer ysgrifennu at ffeiliau gallwn eich gweld yn fideo arall. Hyd yn oed yn haws, er y byddai, fyddai rhywsut ailgyfeirio stdout i ffeil. Y ffordd honno, pan printf yn ysgrifennu at stdout, y cynnwys yn yn cael ei ysgrifennu i ffeil yn hytrach nag a ddangosir gan y derfynell. Gallwn wneud hynny drwy ychwanegu arwydd mwy-na, ac yna gan enw ffeil, i'r gorchymyn a ddefnyddir gennym i weithredu ein rhaglen. Felly, yn hytrach na dim ond gweithredu. / Ailgyfeirio, gallwn rhedeg. / ailgyfeirio, wedi'i ddilyn gan fwy nag arwydd, wedi'i ddilyn gan filename, fel file.txt. Gadewch i ni weld beth sy'n digwydd. OK. Sylwch fod y cyfnod hwn, nid oes dim yn cael ei arddangos yn y derfynfa, ond nid ydym wedi addasu'r cynnwys ein C rhaglen o gwbl. Gadewch i ni nawr yn archwilio'r cynnwys y cyfeirlyfr hwn gyda ls. Mae pob hawl. Erbyn hyn mae gennym ffeil newydd yn ein cyfeiriadur o'r enw file.txt, sef yr enw ffeil rydym yn darparu pan fyddwn yn rhedeg ein Ailgyfeirio rhaglen. Gadewch i ni agor file.txt. Ac yma, gallwn weld bod y stdout allan o ailgyfeirio oedd ysgrifennu at y ffeil o'r enw file.txt. Felly, gadewch i ni redeg y gorchymyn blaenorol eto, ond chyflenwi mewnbwn wahanol y tro hwn. Iawn. Gadewch i ni edrych ar file.txt awr. Gallwn weld yma fod y ffeil wedi bod overwritten, felly mae ein nid y cyfraniad gwreiddiol yno anymore. Os ydym yn hytrach yn dymuno atodi i'r ffeil hon, gan roi'r newydd mewnbwn isod beth oedd cynnwys presennol y ffeil, gallwn ddefnyddio dau yn fwy-nag arwyddion yn hytrach na dim ond un. Gadewch i ni geisio hynny. Yn awr, os ydym yn agor file.txt eto, ni allwn weld y ddau o'n llinellau mewnbwn. Mewn rhai achosion, efallai y byddwn am gael gwared unrhyw allbwn ein rhaglen. Yn hytrach nag ysgrifennu allbwn i ffeil ac yna dileu y ffeil pan fyddwn ni'n ei wneud ag ef, gallwn ysgrifennu at arbennig ffeil o'r enw / dev / null. Pan fydd unrhyw beth wedi ei ysgrifennu i / dev/null-- neu dim ond devnull yn fyr - ei waredu yn awtomatig. Felly meddyliwch am devnull fel twll du ar gyfer eich data. Felly, nawr rydym wedi gweld sut y gall yr arwydd mwy na ailgyfeirio stdout, gadewch i ni weld sut y gallwn ailgyfeirio safonol mewn - neu s-t-d-in - y analog stdout. Er swyddogaethau yn hoffi printf ysgrifennu at y nant a elwir yn stdout, GetString a swyddogaethau tebyg yn darllen o'r ffrwd a elwir yn stdin, sydd, yn ddiofyn, yw'r ffrwd cymeriadau teipio ar y bysellfwrdd. Gallwn ailgyfeirio stdin ddefnyddio llai na arwydd, yn dilyn gan enw ffeil. Yn awr, yn hytrach nag annog y defnyddwyr ar gyfer mewnbwn yn y terfynol, bydd rhaglen agor y ffeil i ni bennu a defnyddio ei linellau fel mewnbwn. Gadewch i ni weld beth sy'n digwydd. Great. Mae'r llinell gyntaf o file.txt wedi cael ei argraffu i'r derfynell oherwydd ein bod yn galw GetString unwaith. Os ydym cafodd alwad arall i GetString yn ein rhaglen, y Byddai llinell nesaf o file.txt wedi cael eu defnyddio fel mewnbwn i'r alwad honno. Unwaith eto, nid ydym wedi addasu ein rhaglen C o gwbl. Rydym yn unig yn newid y ffordd rydym yn rhedeg y. Ac hefyd gofio, nid ydym wedi ailgyfeirio stdout y tro hwn, felly mae'r allbwn y rhaglen yn dal i harddangos yn y derfynfa. Gallwn, wrth gwrs, ailgyfeirio ddau stdin a stdout fel hyn. Yn awr, file2.txt yn cynnwys y llinell gyntaf o file.txt. Felly, gan ddefnyddio'r hyn gweithredwyr, rydym wedi gallu i ddarllen a ysgrifennu o ffeiliau testun. Nawr, gadewch i ni weld sut y gallwn ddefnyddio'r allbwn o un rhaglen fel mewnbwn i raglen arall. Felly dyma un arall raglen C syml yr wyf wedi galw yma hello.c. Fel y gwelwch, mae hyn yn syml allbynnau "Hi yno! "i'r defnyddiwr. Os ydw i eisiau ailgyfeirio i'w defnyddio fel mewnbwn allbwn helo - raglen arall - Gallai tro cyntaf i mi ailgyfeirio y stdout o helo wrth y ffeil o'r enw input.txt, yna ailgyfeirio'r stdin o ailgyfeirio i'r un file - input.txt. Felly gallaf ei wneud. / Helo> input.txt. Gwasgwch Enter i weithredu hyn. Ddilyn gan. / Ailgyfeirio < input.txt, a gweithredu hynny. Felly gallwn fyrhau'r darn yma a gyda hanner colon, sy'n caniatáu ni i redeg dau neu fwy o orchmynion ar yr un llinell. Felly gallaf ddweud,. / Helo> input.txt, hanner colon, . / Ailgyfeirio Final.txt. Felly, os ydym yn agor i fyny final.txt, mae gennym yr union beth yr oeddem yn chwilio am: rhestr o enwau unigryw yn nhrefn yr wyddor, arbed i ffeil destun. Gyda llaw, rydym gallai hefyd wedi dweud fath < students.txt | uniq> final.txt i wneud yn union yr un peth, gan ddefnyddio pob un o'r gweithredwyr ydym wedi gweld yn y fideo hwn. Fy enw i yw Tommy, ac mae hyn yn CS50.