HÖGTALARE 1: Låt oss skriva ett program som uppmanar användaren att namnen och hus av tre studenter. Men snarare än att bara skriva ut sina namn och hus till skärmen, låt oss istället spara den informationen till disk. Med andra ord, låt oss skapa, säg, en CSV fil, för kommaseparerade värden, som egentligen bara en textfil som program som Excel eller Numbers kan öppna, och effektivt spara dem namn och hus permanent, så att vi kan granska dem senare. För att göra detta, låt oss först ta en titt på någon standardtext kod som jag har började med redan. Observera först att bland rubrikerna upp topp är nu standard lib.h som råkar ha vissa funktioner som är kopplade till fil I / O, infil och utgång. Lägg märke till att jag också har deklarerat en konstant som kallas STUDENTER - med stora bokstäver - vars värde är hårdkodad som tre. Observera nu att insidan av min huvudsakliga program, jag förklarar en rad storlek tre använder den konstant som kallas Studenter varje av vars medlemmar är av skriver eleverna. Minns nu att en elev ska vi definiera som att ha ett namn och ett hus som båda som är strängar som per detta deklaration instruerar, punkt h.. Nu tillbaka i structs1.c, märker att jag har en for-loop här som kommer att iterera från noll upp till tre. Det kommer att be mig om en elevs namn och en students hus igen och igen och igen. Sen längst ner i det här programmet, märker att jag har en annan för loop det kommer att frigöra den i: te studentens namn och den i: te studentens hus i en på liknande sätt konstruerade slingan. För att vara säker, kan vi kombinera dessa slingor till bara en, men jag ville har några tydliga segment av kod av hänsyn till diskussionen här. Nu i mellan dem för loopar, låt oss faktiskt har en annan, och den här är syfte i livet är att faktiskt spara alla av dessa namn och hus som är närvarande i RAM till disk i form av kommaseparerade värden. För att göra detta, kommer vi att använda tre nya funktioner - F öppet, F printf, och F nära, vilket öppna en fil, skriva ut till en fil, och stänga en fil. Vi kan använda dem på följande sätt. FIL, med stora bokstäver, som är något av en nyfikenhet i C, blir FIL fopen quote unquote och nu ett namn på fil, säg, students.CSV, men jag kunde kalla det de flesta någonting, kommatecken och nu är jag kommer att ange en enstaka w insidan av dubbla citattecken. W, som ni kanske har gissat redan, innebär att fopen ska öppna filen heter Students.CSV för att skriva så att vi faktiskt kan spara lite innehåll till det. Låt oss nästa kontroll om fil inte är lika med noll. För om det är, har något troligen gått fel i vilket fall vi bör inte fortsätta att försöka att skriva ut något till den. Men om det inte är noll, då insidan av krullparenteser jag ska iterera från i är lika med 0 på upp till STUDENTER, och jag ska öka i varje iteration. Och inne i denna slinga, kommer jag att fprintf för att skriva ut till en fil - särskilt den som Jag har redan öppnat - en sträng som ser ut så här% s,% s omvänt snedstreck n nära citat. Och nu vill jag koppla in till var och en av dessa platshållare ärvärden av en elevs namn och ett hus med hjälp av punktoperatorn. Studerande bygel i.name, studerande bygel i.house close föräldra semikolon. Nu under detta för slinga, jag är helt enkelt kommer att kalla fclose av filen för för att slutligen avsluta ärendet. Nu när jag kör det här programmet, jag borde inte faktiskt se något på skärmen, men jag borde ha efter att ha kört det här programmet en fil som heter Students.CSV i samma katalog som Jag kör kommandot i att om innehålla en kommaseparerad lista med värden. Låt oss ta en titt. Gör structs 1. / Structs1 studentens namn, låt oss säga David, han kommer att leva i Mather. Studentens namn, låt oss säga, Lauren, hon ska leva i Leverett. Studentens namn, låt oss säga, Rob, han bor i Kirkland. Nu, igen, som förväntat, visas ingenting att ha hänt, men låt mig gå vidare i kommandotolken och skriv g redigera students.CSV i hopp om att att filen finns faktiskt. Gedit students.CSV ENTER, och faktiskt, märker att en fil som innehåller rent text, utan text separerade med kommatecken för varje fält, existerar faktiskt. Och om vi använder, inte det CS50 apparaten, men en mer bekant Mac eller PC, visar det sig att vi kunde faktiskt öppna CSV-fil med en mer välbekanta program som Excel eller Numbers.