[Powered by Google Translate] Tommy: In hierdie video, sal ons leer oor redirecting en pype. So ver, het ons al met behulp van funksies soos printf te uitvoer data na die terminale en funksies soos GetString in staat te stel om die gebruiker om insette te lewer aan ons program met behulp van die sleutelbord. Kom ons vinnig 'n blik op 'n program wat kry 'n lyn van toevoer van die gebruiker en dan uitgange. On line 7, ons waarna die gebruiker vir 'n string, en dan on line 8, ons druk dit terug uit. Kom se ons program te stel en uit te voer. Groot. Die string wat ons verskaf is eggo terug ons by die terminale. Dit het gebeur omdat die printf funksie het aan 'n stroom genoem standaard uit, of s-t-d-out. Wanneer iets geskryf na stdout, dit is by verstek vertoon deur die terminale. So dit is alles goed en wel, maar wat as, in plaas van net die vertoon van die tou, ons wou dit op te slaan na 'n lêer? Byvoorbeeld, ons wil om te onthou presies wat ons program gedoen het toe ons het dit 'n bepaalde inset later. Een benadering sou wees om dit te doen in ons C-program, met behulp van n paar spesiale funksies vir die skryf van tot lêers wat ons sal sien in 'n ander video. Nog makliker te maak, al is, sou wees om die een of ander manier herleid stdout na 'n lêer. Op dié manier, wanneer printf na stdout skryf, sal die inhoud geskryf moet word eerder as om 'n lêer vertoon deur die terminale. Ons het net wat dit kan doen, gevolg deur die toevoeging van 'n groter-as teken deur 'n lêer naam, die opdrag wat ons gebruik om ons program uit te voer. Dus, eerder as om bloot die uitvoering / aanstuur, kan ons hardloop / aanstuur, gevolg deur 'n groter as teken, gevolg deur lêernaam, soos file.txt. Kom ons kyk wat gebeur. OK. Let daarop dat hierdie tyd, niks is by die terminale vertoon, maar ons het nie verander die inhoud van ons C program at all. Kom ons ondersoek nou die inhoud van hierdie gids met ls. Alles reg. Ons het nou 'n nuwe lêer in ons gids genoem file.txt, wat is die naam van die lêer wat ons verskaf toe ons ons Redirect program. Kom ons oopmaak file.txt. En hier kan ons sien dat die stdout uit aanstuur geskryf om die lêer genaamd file.txt. So laat loop die vorige opdrag weer, maar die verskaffing van 'n verskillende inset hierdie tyd. Okay. Kom ons neem 'n blik op file.txt nou. Ons kan hier sien dat die lêer oorskryf, sodat ons oorspronklike insette nie daar is nie. As ons wil plaas toe te voeg aan hierdie lêer, om die nuwe insette onder die bestaande inhoud van die lêer, kan ons twee groter as tekens gebruik in plaas van net een. Kom ons probeer om daardie. Nou, as ons oop file.txt weer, kan ons sien beide van ons toevoer lyne. In sommige gevalle, kan ons enige weggooi uitset van ons program. Eerder as om die skryf van die uitset na 'n lêer en vee dan die lêer wanneer ons klaar is met dit, kan ons skryf 'n spesiale lêer genaamd / dev / null. Wanneer enigiets geskrewe / dev/null-- of net devnull vir 'n kort - Dit is outomaties weggegooi. So dink van devnull as 'n swart gat vir jou data. So nou het ons gesien hoe die groter as teken kan aanstuur stdout, laat ons sien hoe ons kan jou verwys na standaard in - of s-t-d-in - die analoog van stdout. Terwyl funksies soos printf skryf aan die stroom genoem stdout, GetString en soortgelyke funksies gelees uit die stroom genoem stdin, wat by verstek, is die stroom van karakters op die sleutelbord getik. Ons kan stdin deur gebruik te maak van die minder as teken aanstuur, gevolg deur 'n lêernaam. Nou, eerder as om te vra die gebruiker om insette te lewer by die terminale, 'n program om die lêer oop te maak ons ​​gespesifiseer en gebruik sy lyne as inset. Kom ons kyk wat gebeur. Groot. Die eerste reël van file.txt gedruk is om die terminale omdat ons 'n beroep GetString keer. As ons 'n ander oproep tot GetString in ons program, die volgende lyn van file.txt sou gewees het as insette tot daardie oproep. Weereens, het ons nie verander ons C program at all. Ons is net die verandering van hoe ons dit hardloop. En onthou ook, ons het nie getrek stdout hierdie tyd, sodat die afvoer van die program was nog vertoon op die terminale. Ons kan, natuurlik, skakel beide stdin en stdout soos hierdie. Nou, file2.txt bevat die eerste reël van file.txt. So, deur gebruik te maak van hierdie operateurs, het ons in staat was om te lees en te skryf van die teks lêers. Nou, laat ons sien hoe ons kan die produksie van een program gebruik as die inset na 'n ander program. So hier is 'n ander eenvoudige C-program het ek hier genoem hello.c. Soos jy kan sien, hierdie uitsette net "Hi daar "aan die gebruiker. As ek wil aanstuur om te gebruik as insette om die uitset van Hello - n ander program - Ek kon eers lei die stdout van Hello na 'n lêer met die naam input.txt, dan lei die stdin van redirect na daardie selfde lêer - input.txt. So ek kan doen. / Hallo> input.txt. Druk Enter om dit uit te voer. Gevolg deur / Aansturing < input.txt, en uit te voer. Sodat ons kan verkort dit 'n bietjie met 'n kommapunt, wat toelaat dat ons twee of meer opdragte uit te voer op dieselfde lyn. So ek kan sê,. / Hello> input.txt, kommapunt, / Redirect Final.txt. Dus, as ons oopmaak final.txt, het ons presies wat ons op soek na: 'n lys van unieke name in alfabetiese volgorde, na 'n tekslêer gestoor. By the way, ons sou ook kon gesê het soort < students.txt | Uniq> final.txt te doen presies dieselfde ding, die gebruik van elk van die operateurs wat ons gesien het hierdie video. My naam is Tommy, en dit is CS50.