>> SPEAKER 1: La oss skrive et program som ber brukeren om navn og
hus av tre studenter.
Men heller enn å bare skrive ut sin navn og husene til skjermen, la oss
i stedet lagre denne informasjonen til disken.
Med andre ord, la oss lage, sier en CSV fil, for kommaseparert verdier,
som er egentlig bare en tekstfil som programmer som Excel eller Numbers
kan åpne, og effektivt frelse dem navn og hus permanent, slik at
vi kan vurdere dem senere.
>> For å gjøre dette, la oss først ta en titt på noen standardkode som jeg har
startet med allerede.
Legg merke til først at blant overskriftene opp toppen er nå standard lib.h som
tilfeldigvis har noen funksjoner relatert til fil I / O, fil inngang og utgang.
Legg merke til at jeg har også erklært en konstant kalt STUDENTER -
i store bokstaver - som har en verdi er hard kodet som tre.
Legg merke til nå at innsiden av min viktigste program, jeg erklære en rekke
størrelse tre bruker den konstant kalt Studenter hvert av medlemmene er av
skriver studentene.
>> Husker nå at en student vil vi definere som å ha et navn og et hus som begge
som er strenger som per denne erklæring instruerer, dot h.
Nå tilbake i structs1.c, legge merke til at jeg har en for løkke her som kommer til å
iterere fra null og opp til tre.
Det kommer til å be meg om en elevs navn og en student hus
igjen og igjen og igjen.
>> Deretter ved bunnen av dette programmet, merker at jeg har en annen for loop
som kommer til å frigjøre ith studentens navn og ith studentens hus i en
av lignende konstruksjon løkke.
For å være sikker, kan vi kombinere disse sløyfer inn bare ett, men jeg ønsket å
har noen forskjellige segmenter av kode av hensyn til diskusjonen her.
>> Nå i mellom dem for looper, la oss faktisk har en annen, og dette ens
formål i livet er å faktisk redde alle av disse navnene og hus som er
for tiden i RAM til disk i form av kommaseparert verdier.
For å gjøre dette, kommer vi til å bruke tre nye funksjoner -
F åpen, F printf, og F tett, som åpne en fil, skrive til en fil, og
lukke en fil.
Vi kan bruke dem på følgende måte.
>> FIL, i store bokstaver, som er noe av en kuriositet i C, blir FIL fopen
quote unquote og nå et navn på fil, si, students.CSV, men jeg kunne
kaller det de fleste noe, komma og nå er jeg kommer til å spesifisere en enkelt w inne
av doble anførselstegn.
W, som du kanskje har gjettet allerede, betyr at fopen bør åpne denne filen
kalt Students.CSV for å skrive så at vi faktisk kan spare noen
innholdet til det.
>> La oss neste sjekk hvis fil er ikke lik null.
Fordi hvis det er, har noe trolig gått galt og da vi
bør ikke fortsette å prøve å skrive ut noe til det.
Men hvis det ikke er null, så innsiden av klammeparentes jeg kommer til å reagere
fra jeg er lik 0 på opp til studenter, og jeg kommer til å
øke jeg på hver iterasjon.
Og inne i denne sløyfen, jeg kommer til å fprintf slik som å skrive til en fil -
spesielt en Jeg har allerede åpnet -
en streng som ser ut som denne% s,% s backslash n nær sitat.
>> Og nå ønsker jeg å koble til hver av disse plassholdere de faktiske verdiene
av studentens navn og et hus ved hjelp av punkt operatør.
Studenter brakett i.name, studenter brakett i.house nære paren
semikolon.
Nå under dette for loop, jeg er rett og slett kommer til å ringe fclose av filen for
til slutt lukke filen.
>> Nå når jeg kjører dette programmet, skal jeg ikke faktisk se noe på
skjermen, men jeg burde ha etter å ha kjørt dette programmet en fil som heter
Students.CSV i samme katalog som Jeg kjører kommandoen i at dersom
inneholde en kommaseparert liste med verdier.
La oss ta en titt.
>> Gjør structs en. / Structs1 studentens navn, la oss si David,
han vil leve i Mather.
Studentens navn, la oss si, Lauren, hun vil leve i Leverett.
Studentens navn, la oss si, Rob, han vil leve i Kirkland.
Nå er, igjen, som forventet, skjer det ikke noe å ha skjedd, men la meg
gå foran ved ledeteksten og type g redigere students.CSV i håp om at
at filen faktisk eksisterer.
>> Gedit students.CSV ENTER, og faktisk, legge merke til at en fil som inneholder rent
tekst, men tekst atskilt med komma for hvert felt, finnes faktisk.
Og hvis vi bruker, ikke CS50 apparatet, men en mer kjent Mac eller
PC, viser det seg at vi kunne faktisk åpne denne CSV-fil med en mer
kjent program som Excel eller Numbers.