>> Tagapagsalita 1: magsulat ng isang programa Hayaan na prompt ang user para sa mga pangalan at
mga bahay ng tatlong mga mag-aaral.
Ngunit sa halip na i-print lamang ang kanilang mga pangalan at mga bahay sa screen, sabihin
sa halip i-save ang impormasyon na iyon sa disk.
Sa ibang salita, ay lumikha ipaalam sa, sabihin nating, isang CSV file, para sa comma separated values,
na kung saan ay talagang lamang ng isang text file na mga programa tulad ng Excel o Numero
maaaring buksan, at epektibong i-save ang mga mga pangalan at bahay permanente nang sa gayon ay
maaari naming suriin ang mga ito sa ibang pagkakataon.
>> Upang gawin ito, sabihin muna bistahan ilang code boilerplate na na hindi ko na
Magsimula sa na.
Pansinin unang na kabilang sa mga header up tuktok na ngayon ang standard lib.h na
ang mangyayari sa mayroon ng ilang mga pag-andar na may kaugnayan mag-file I / O, file input at output.
Pansinin na ipinahayag ko na rin isang pare-pareho ang tinatawag na ESTUDYANTE -
sa lahat ng caps - na kung saan ang halaga matapang ay naka-code bilang tatlong.
Pansinin ngayon na sa loob ng aking pangunahing programa, ako deklarasyon ng isang array ng
laki ng tatlong gamit na pare-pareho ang tinatawag na ESTUDYANTE bawat isa sa na ang mga miyembro ay ng
type mga mag-aaral.
>> Isipin ngayon na ang isang mag-aaral ipapakita namin tukuyin bilang mayroong isang pangalan at isang bahay ang parehong
na kung saan ay mga string ng bawat na ito deklarasyon-tagubilin, tuldok h.
Ngayon bumalik sa structs1.c, mapapansin na ako na isang para sa loop dito na pupuntahan
umulit mula zero hanggang sa tatlong.
Ito ay pagpunta upang i-prompt sa akin para sa isang mag-aaral pangalan at bahay ng isang mag-aaral
at muli at muli muli.
>> Pagkatapos ay sa ilalim ng programang ito, mapansin na mayroon akong isa pang para sa loop
na pupuntahan palayain ng mag-aaral ith pangalan at bahay ng mag-aaral ith sa isang
katulad na itinayo loop.
Upang maging sigurado, maaari naming pagsamahin ang mga loop sa isa lamang, ngunit nais kong
may ilang mga natatanging mga segment ng code alang-alang sa talakayan dito.
>> Ngayon sa pagitan ng mga para sa mga loop, sabihin talagang may isa pa, at isa na ito
layunin sa buhay ay upang aktwal na i-save ang lahat ng mga pangalan at mga bahay na
Kasalukuyang nasa RAM sa disk sa anyo ng comma separated values.
Upang gawin ito, kami ay pagpunta sa gamitin tatlong bagong mga pag-andar -
F bukas, F printf, at F malapit, na buksan ang file, i-print sa isang file, at
isara ang isang file.
Maaari naming gamitin ang mga ito bilang mga sumusunod.
>> FILE, sa lahat ng mga pag-cap, na kung saan ay medo ng isang pag-usisa sa C, FILE ay makakakuha ng fopen
quote magpanipi at ngayon ng pangalan para sa maghain, sabihin nating, students.CSV, ngunit magagawa ko
tumawag ito pinaka-anumang bagay, kuwit at ngayon ako ay pagpunta upang tukuyin ang isang solong w loob
ng double quotes.
W, pati na maaaring nahulaan na, Ibig sabihin nito na fopen dapat buksan ang file na ito
tinatawag Students.CSV para sa pagsusulat kaya na maaari talagang i-save namin ang ilang
mga nilalaman nito.
>> Sabihin susunod na check kung file ay hindi kapantay sa null.
Dahil kung ito ay, isang bagay ay marahil maling naganap na kung saan namin
hindi dapat magpatuloy upang subukan upang i-print ang anumang bagay dito.
Ngunit kung ito ay hindi null, pagkatapos ay sa loob ng kulot tirante pupuntahan ko umulit
mula sa i katumbas ng 0 sa hanggang sa ESTUDYANTE, at pupuntahan ko
dinagdagan i sa bawat pag-ulit.
At sa loob ng loop na ito, ako ay pagpunta sa fprintf upang mag-print sa isang file -
partikular na ang isa Kakabukas ko na -
isang string na ganito ang hitsura% s,% s backslash n malapit quote.
>> At ngayon, gusto kong i-plug in sa bawat isa sa mga placeholder ang aktwal na mga halaga
ng pangalan ng isang mag-aaral at ng bahay gamit ang tuldok operator.
Mga mag-aaral bracket i.name, mag-aaral bracket i.house malapit paren
semi-colon.
Ngayon sa ibaba na ito para sa loop, simpleng ako pagpunta sa tumawag sa fclose ng file sa pagkakasunud-sunod
sa huli isara ang file.
>> Ngayon kapag ba akong magpatakbo ng programang ito, hindi ko dapat talaga makita ang anumang bagay sa
screen, ngunit ang dapat kong magkaroon pagkatapos tumatakbo ang program na ito ng isang file na tinatawag na
Students.CSV sa parehong directory na Ba akong magpatakbo ng command sa na dapat
naglalaman ng isang comma separated listahan ng mga halaga.
Hayaan ang kumuha ng isang hitsura.
>> Gawing structs 1. Estudyante / structs1 pangalanan, sabihin nating David,
Makikita siya nakatira sa Mather.
Pangalan ng mag-aaral, sabihin nating, Lauren, Makikita siya nakatira sa Leverett.
Pangalan ng mag-aaral, sabihin nating, Rob, Makikita siya nakatira sa Kirkland.
Ngayon, muli, tulad ng inaasahan, walang lumilitaw sa nangyari, ngunit hayaan mo akong
sige sa command prompt at uri g-edit students.CSV sa pag-asa na
sa katunayan umiiral ang file na.
>> Gedit students.CSV ENTER, at sa katunayan, mapapansin na ang isang file na naglalaman nang wagas
teksto, ngunit teksto pinaghihiwalay ng mga kuwit para sa bawat field, sa katunayan umiiral na.
At kung namin ang paggamit ay, hindi ang CS50 appliance, ngunit isang mas pamilyar na Mac o
PC, ito ay lumiliko out na maaari naming katunayan buksan ang CSV file sa isang mas
pamilyar na programa tulad ng Excel o Numero.