2 00:00:00,000 --> 00:00:02,470 >> Tagapagsalita 1: magsulat ng isang programa Hayaan na prompt ang user para sa mga pangalan at 3 00:00:02,470 --> 00:00:03,990 mga bahay ng tatlong mga mag-aaral. 4 00:00:03,990 --> 00:00:07,300 Ngunit sa halip na i-print lamang ang kanilang mga pangalan at mga bahay sa screen, sabihin 5 00:00:07,300 --> 00:00:09,660 sa halip i-save ang impormasyon na iyon sa disk. 6 00:00:09,660 --> 00:00:14,530 Sa ibang salita, ay lumikha ipaalam sa, sabihin nating, isang CSV file, para sa comma separated values, 7 00:00:14,530 --> 00:00:17,720 na kung saan ay talagang lamang ng isang text file na mga programa tulad ng Excel o Numero 8 00:00:17,720 --> 00:00:21,690 maaaring buksan, at epektibong i-save ang mga mga pangalan at bahay permanente nang sa gayon ay 9 00:00:21,690 --> 00:00:23,220 maaari naming suriin ang mga ito sa ibang pagkakataon. 10 00:00:23,220 --> 00:00:25,960 >> Upang gawin ito, sabihin muna bistahan ilang code boilerplate na na hindi ko na 11 00:00:25,960 --> 00:00:27,650 Magsimula sa na. 12 00:00:27,650 --> 00:00:32,380 Pansinin unang na kabilang sa mga header up tuktok na ngayon ang standard lib.h na 13 00:00:32,380 --> 00:00:36,710 ang mangyayari sa mayroon ng ilang mga pag-andar na may kaugnayan mag-file I / O, file input at output. 14 00:00:36,710 --> 00:00:39,560 Pansinin na ipinahayag ko na rin isang pare-pareho ang tinatawag na ESTUDYANTE - 15 00:00:39,560 --> 00:00:42,380 sa lahat ng caps - na kung saan ang halaga matapang ay naka-code bilang tatlong. 16 00:00:42,380 --> 00:00:45,820 Pansinin ngayon na sa loob ng aking pangunahing programa, ako deklarasyon ng isang array ng 17 00:00:45,820 --> 00:00:50,270 laki ng tatlong gamit na pare-pareho ang tinatawag na ESTUDYANTE bawat isa sa na ang mga miyembro ay ng 18 00:00:50,270 --> 00:00:51,650 type mga mag-aaral. 19 00:00:51,650 --> 00:00:56,150 >> Isipin ngayon na ang isang mag-aaral ipapakita namin tukuyin bilang mayroong isang pangalan at isang bahay ang parehong 20 00:00:56,150 --> 00:01:00,410 na kung saan ay mga string ng bawat na ito deklarasyon-tagubilin, tuldok h. 21 00:01:00,410 --> 00:01:04,680 Ngayon bumalik sa structs1.c, mapapansin na ako na isang para sa loop dito na pupuntahan 22 00:01:04,680 --> 00:01:06,750 umulit mula zero hanggang sa tatlong. 23 00:01:06,750 --> 00:01:10,020 Ito ay pagpunta upang i-prompt sa akin para sa isang mag-aaral pangalan at bahay ng isang mag-aaral 24 00:01:10,020 --> 00:01:12,310 at muli at muli muli. 25 00:01:12,310 --> 00:01:15,620 >> Pagkatapos ay sa ilalim ng programang ito, mapansin na mayroon akong isa pang para sa loop 26 00:01:15,620 --> 00:01:19,970 na pupuntahan palayain ng mag-aaral ith pangalan at bahay ng mag-aaral ith sa isang 27 00:01:19,970 --> 00:01:21,570 katulad na itinayo loop. 28 00:01:21,570 --> 00:01:24,480 Upang maging sigurado, maaari naming pagsamahin ang mga loop sa isa lamang, ngunit nais kong 29 00:01:24,480 --> 00:01:28,180 may ilang mga natatanging mga segment ng code alang-alang sa talakayan dito. 30 00:01:28,180 --> 00:01:31,920 >> Ngayon sa pagitan ng mga para sa mga loop, sabihin talagang may isa pa, at isa na ito 31 00:01:31,920 --> 00:01:35,210 layunin sa buhay ay upang aktwal na i-save ang lahat ng mga pangalan at mga bahay na 32 00:01:35,210 --> 00:01:39,810 Kasalukuyang nasa RAM sa disk sa anyo ng comma separated values. 33 00:01:39,810 --> 00:01:42,080 Upang gawin ito, kami ay pagpunta sa gamitin tatlong bagong mga pag-andar - 34 00:01:42,080 --> 00:01:47,450 F bukas, F printf, at F malapit, na buksan ang file, i-print sa isang file, at 35 00:01:47,450 --> 00:01:48,440 isara ang isang file. 36 00:01:48,440 --> 00:01:49,690 Maaari naming gamitin ang mga ito bilang mga sumusunod. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> FILE, sa lahat ng mga pag-cap, na kung saan ay medo ng isang pag-usisa sa C, FILE ay makakakuha ng fopen 39 00:01:58,240 --> 00:02:03,020 quote magpanipi at ngayon ng pangalan para sa maghain, sabihin nating, students.CSV, ngunit magagawa ko 40 00:02:03,020 --> 00:02:08,150 tumawag ito pinaka-anumang bagay, kuwit at ngayon ako ay pagpunta upang tukuyin ang isang solong w loob 41 00:02:08,150 --> 00:02:09,390 ng double quotes. 42 00:02:09,390 --> 00:02:13,290 W, pati na maaaring nahulaan na, Ibig sabihin nito na fopen dapat buksan ang file na ito 43 00:02:13,290 --> 00:02:17,360 tinatawag Students.CSV para sa pagsusulat kaya na maaari talagang i-save namin ang ilang 44 00:02:17,360 --> 00:02:19,370 mga nilalaman nito. 45 00:02:19,370 --> 00:02:23,080 >> Sabihin susunod na check kung file ay hindi kapantay sa null. 46 00:02:23,080 --> 00:02:25,860 Dahil kung ito ay, isang bagay ay marahil maling naganap na kung saan namin 47 00:02:25,860 --> 00:02:28,340 hindi dapat magpatuloy upang subukan upang i-print ang anumang bagay dito. 48 00:02:28,340 --> 00:02:33,400 Ngunit kung ito ay hindi null, pagkatapos ay sa loob ng kulot tirante pupuntahan ko umulit 49 00:02:33,400 --> 00:02:38,030 mula sa i katumbas ng 0 sa hanggang sa ESTUDYANTE, at pupuntahan ko 50 00:02:38,030 --> 00:02:40,180 dinagdagan i sa bawat pag-ulit. 51 00:02:40,180 --> 00:02:45,750 At sa loob ng loop na ito, ako ay pagpunta sa fprintf upang mag-print sa isang file - 52 00:02:45,750 --> 00:02:47,940 partikular na ang isa Kakabukas ko na - 53 00:02:47,940 --> 00:02:54,650 isang string na ganito ang hitsura% s,% s backslash n malapit quote. 54 00:02:54,650 --> 00:02:58,790 >> At ngayon, gusto kong i-plug in sa bawat isa sa mga placeholder ang aktwal na mga halaga 55 00:02:58,790 --> 00:03:03,390 ng pangalan ng isang mag-aaral at ng bahay gamit ang tuldok operator. 56 00:03:03,390 --> 00:03:10,030 Mga mag-aaral bracket i.name, mag-aaral bracket i.house malapit paren 57 00:03:10,030 --> 00:03:11,230 semi-colon. 58 00:03:11,230 --> 00:03:16,180 Ngayon sa ibaba na ito para sa loop, simpleng ako pagpunta sa tumawag sa fclose ng file sa pagkakasunud-sunod 59 00:03:16,180 --> 00:03:18,520 sa huli isara ang file. 60 00:03:18,520 --> 00:03:21,360 >> Ngayon kapag ba akong magpatakbo ng programang ito, hindi ko dapat talaga makita ang anumang bagay sa 61 00:03:21,360 --> 00:03:25,010 screen, ngunit ang dapat kong magkaroon pagkatapos tumatakbo ang program na ito ng isang file na tinatawag na 62 00:03:25,010 --> 00:03:29,130 Students.CSV sa parehong directory na Ba akong magpatakbo ng command sa na dapat 63 00:03:29,130 --> 00:03:32,480 naglalaman ng isang comma separated listahan ng mga halaga. 64 00:03:32,480 --> 00:03:34,790 Hayaan ang kumuha ng isang hitsura. 65 00:03:34,790 --> 00:03:41,690 >> Gawing structs 1. Estudyante / structs1 pangalanan, sabihin nating David, 66 00:03:41,690 --> 00:03:43,140 Makikita siya nakatira sa Mather. 67 00:03:43,140 --> 00:03:46,890 Pangalan ng mag-aaral, sabihin nating, Lauren, Makikita siya nakatira sa Leverett. 68 00:03:46,890 --> 00:03:50,800 Pangalan ng mag-aaral, sabihin nating, Rob, Makikita siya nakatira sa Kirkland. 69 00:03:50,800 --> 00:03:54,050 Ngayon, muli, tulad ng inaasahan, walang lumilitaw sa nangyari, ngunit hayaan mo akong 70 00:03:54,050 --> 00:03:58,790 sige sa command prompt at uri g-edit students.CSV sa pag-asa na 71 00:03:58,790 --> 00:04:00,850 sa katunayan umiiral ang file na. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ENTER, at sa katunayan, mapapansin na ang isang file na naglalaman nang wagas 73 00:04:07,010 --> 00:04:11,320 teksto, ngunit teksto pinaghihiwalay ng mga kuwit para sa bawat field, sa katunayan umiiral na. 74 00:04:11,320 --> 00:04:14,530 At kung namin ang paggamit ay, hindi ang CS50 appliance, ngunit isang mas pamilyar na Mac o 75 00:04:14,530 --> 00:04:18,080 PC, ito ay lumiliko out na maaari naming katunayan buksan ang CSV file sa isang mas 76 00:04:18,080 --> 00:04:20,400 pamilyar na programa tulad ng Excel o Numero. 77 00:04:20,400 --> 00:04:22,906