[Powered by Google Translate] TOMMY: In deze video zullen we leren over heroriëntatie en leidingen. Tot nu toe hebben we gebruik gemaakt van functies zoals printf aan data naar de terminal en functies zoals GetString zodat de gebruiker om input te leveren voor onze programma met behulp van het toetsenbord. Laten we snel een kijkje nemen op een programma dat een lijn van krijgt input van de gebruiker en voert dan het. Op lijn 7, we vragen aan de gebruiker voor een string, en dan op lijn 8, we zijn het af te drukken weer naar buiten. Laten we samen te stellen en uit te voeren ons programma. Geweldig. De string die we hebben verstrekt, werden teruggeëchood om ons op de terminal. Dit gebeurde omdat de printf functie schreef aan een riviertje standard of s-t-d-out. Wanneer er iets wordt geschreven naar stdout, het is standaard weergegeven door de terminal. Dus dat is allemaal goed en wel, maar wat als, in plaats van alleen het weergeven van de string, wilden we het op te slaan in een bestand? Bijvoorbeeld, we willen onthouden precies wat onze programma deden toen we gaven het een bepaalde input later. Een benadering zou zijn om dit te doen in onze C-programma, met behulp van een aantal speciale functies voor het schrijven naar bestanden die we zullen zien in een andere video. Nog makkelijker, hoewel, zou zijn om een ​​of andere manier stdout naar een bestand. Op die manier, als printf schrijft naar stdout, de inhoud zal worden geschreven naar een bestand niet weergegeven door de terminal. We kunnen precies dat te doen door het toevoegen van een groter-dan-teken, gevolgd door een bestandsnaam, de opdracht die we gebruiken om ons programma uit te voeren. Dus, in plaats van simpelweg het uitvoeren van. / Redirect, kunnen we uitgevoerd. / redirect, gevolgd door een groter dan teken, gevolgd door bestandsnaam, zoals bestand.txt. Laten we eens kijken wat er gebeurt. OK. Merk op dat deze tijd niets werd getoond op de terminal, maar niet gewijzigde inhoud van onze C programmeren. Laten we nu de inhoud van deze map met ls te onderzoeken. Oke. We hebben nu een nieuw bestand in onze directory met de naam bestand.txt, dat is de bestandsnaam leverden we toen hebben we onze Redirect programma. Laten we open bestand.txt. En hier zien we dat de stdout van de redirect was weggeschreven naar het bestand met de naam bestand.txt. Dus laten we opnieuw uit te voeren het vorige commando, maar het leveren van een verschillende input deze keer. Oke. Laten we nu een kijkje nemen op bestand.txt. We kunnen hier zien dat het bestand is overschreven, zodat onze oorspronkelijke ingang is er niet meer. Als we in plaats daarvan willen toevoegen aan dit bestand, waardoor de nieuwe vermogen van minder dan de bestaande inhoud van het bestand, kunnen we in plaats daarvan gebruik maken van twee groter-dan-tekens van slechts een. Laten we proberen dat. Nu, als we open bestand.txt weer, zien we onze beide ingang lijnen. In sommige gevallen willen we elke weggooien output van ons programma. In plaats van het schrijven van de uitvoer naar een bestand en vervolgens het verwijderen van het bestand wanneer we klaar zijn met het, kunnen we schrijven een speciale bestand met de naam / dev / null. Als er iets is geschreven naar / dev/null-- of gewoon devnull voor de korte - het automatisch verwijderd. Dus denk aan devnull als een zwart gat voor uw gegevens. Dus nu hebben we gezien hoe de groter dan teken kan omleiden stdout, laten we eens kijken hoe we kunnen standaard redirect in - of s-t-d-in - het analoog van stdout. Terwijl functies zoals printf schrijven naar de naam van de beek stdout, GetString en soortgelijke functies te lezen uit de stroom genaamd stdin, die standaard, is de stroom van ingetikte letters op het toetsenbord. We kunnen stdin met behulp van de minder-dan-teken redirect, gevolgd door een bestandsnaam. Nu plaats de gebruiker vraagt ​​ingang aan de terminal zal een programma opent u het bestand dat we gespecificeerd en gebruiken de lijnen als input. Laten we eens kijken wat er gebeurt. Geweldig. De eerste regel van bestand.txt is afgedrukt naar de terminal omdat we noemen GetString een keer. Als we nog een oproep naar GetString in ons programma, de volgende regel van bestand.txt gebruikt zou zijn als input van de oproep. Nogmaals, we hebben niet gewijzigd ons C-programma op alle. We zijn alleen het veranderen van de manier waarop we het uit te voeren. En ook niet vergeten, we hebben niet doorgestuurd stdout deze tijd, De output van het programma nog weergegeven op de terminal. Wij kunnen natuurlijk, redirect zowel stdin en stdout als deze. Nu, file2.txt bevat de eerste regel van bestand.txt. Dus, met behulp van deze operatoren hebben we kunnen lezen en schrijven vanuit tekstbestanden. Nu, laten we eens kijken hoe we de output van het ene programma te gebruiken als de ingang een ander programma. Dus hier is nog een eenvoudige C programma I hebben hier genoemd hello.c. Zoals u kunt zien, deze uitgangen gewoon "Hi er "voor de gebruiker. Als ik wil omleiden gebruiken als input de output van hello - een ander programma - Ik kon de stdout van hello eerste omleiden naar een bestand met de input.txt, leid de stdin van om te leiden naar diezelfde bestand - input.txt. Dus ik kan doen. / Hello> input.txt. Druk op Enter om deze uit te voeren. Gevolgd door. / Redirect < input.txt, en uit te voeren dat. Dus we kunnen verkorten dit een beetje met een puntkomma, die het mogelijk maakt ons om twee of meer commando's op dezelfde lijn. Dus ik kan zeggen,. / Hello> input.txt, puntkomma, . / Redirect Final.txt. Dus, als we open final.txt, hebben we precies wat we zochten zoek: een lijst met unieke namen in alfabetische volgorde, opgeslagen in een tekstbestand. By the way, we ook kunnen zeggen sorteren < students.txt | uniq> final.txt om precies te doen hetzelfde, met behulp van elk van de operatoren die we hebben gezien in deze video. Mijn naam is Tommy, en dit is CS50.