>> 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.