2 00:00:00,000 --> 00:00:02,470 >> Spreker 1: Kom ons skryf 'n program wat vra die gebruiker om die name en 3 00:00:02,470 --> 00:00:03,990 huise van drie studente. 4 00:00:03,990 --> 00:00:07,300 Maar eerder as om net uit te druk hul name en huise na die skerm, laat 5 00:00:07,300 --> 00:00:09,660 plaas behalwe dat inligting na die skyf. 6 00:00:09,660 --> 00:00:14,530 Met ander woorde, laat ons ', sê, 'n CSV lêer, vir kommas geskei waardes, 7 00:00:14,530 --> 00:00:17,720 wat eintlik net 'n teks lêer wat programme soos Excel of Nommers 8 00:00:17,720 --> 00:00:21,690 kan oopmaak, en effektief red diegene name en huise permanent sodat 9 00:00:21,690 --> 00:00:23,220 ons kan dit later hersien. 10 00:00:23,220 --> 00:00:25,960 >> Om dit te doen, laat ons eers 'n blik op sommige boiler-kode wat ek 11 00:00:25,960 --> 00:00:27,650 begin met reeds. 12 00:00:27,650 --> 00:00:32,380 Let eerste wat onder die kop up top is nou standaard lib.h wat 13 00:00:32,380 --> 00:00:36,710 gebeur 'n paar funksies wat verband hou met 'n I / O, lêer toevoer en afvoer te dien. 14 00:00:36,710 --> 00:00:39,560 Let daarop dat ek het ook verklaar 'n konstante genoem studente - 15 00:00:39,560 --> 00:00:42,380 in hoofletters - waarvan die waarde hard gekodeer as drie. 16 00:00:42,380 --> 00:00:45,820 Let nou dat die binnekant van my program, ek verklaar 'n verskeidenheid van 17 00:00:45,820 --> 00:00:50,270 grootte drie met behulp van die konstante genoem Studente elk van wie se lede is van 18 00:00:50,270 --> 00:00:51,650 tik-studente. 19 00:00:51,650 --> 00:00:56,150 >> Onthou nou dat 'n student sal ons definieer as 'n naam en 'n huis wat albei 20 00:00:56,150 --> 00:01:00,410 wat stringe soos per die verklaring opdrag, dot h. 21 00:01:00,410 --> 00:01:04,680 Nou terug in structs1.c, kennis dat ek het 'n lus vir die hier wat gaan 22 00:01:04,680 --> 00:01:06,750 Itereer van nul tot drie. 23 00:01:06,750 --> 00:01:10,020 Dit gaan my gevra vir 'n student se naam en 'n student se huis 24 00:01:10,020 --> 00:01:12,310 weer en weer en weer. 25 00:01:12,310 --> 00:01:15,620 >> Dan aan die onderkant van hierdie program, sien dat Ek het nog 'n for-lus 26 00:01:15,620 --> 00:01:19,970 wat gaan bevry die i student se naam en die i student se huis in 'n 27 00:01:19,970 --> 00:01:21,570 Net so gebou lus. 28 00:01:21,570 --> 00:01:24,480 Om seker te wees, kan ons die loops kombineer in net een nie, maar ek wou 29 00:01:24,480 --> 00:01:28,180 het 'n paar verskillende segmente van die kode ter wille van die bespreking hier. 30 00:01:28,180 --> 00:01:31,920 >> Nou tussen dié vir loops, laat ons eintlik 'n ander, en hierdie een se 31 00:01:31,920 --> 00:01:35,210 doel in die lewe is om werklik al red van hierdie name en huise wat 32 00:01:35,210 --> 00:01:39,810 tans in die geheue op skyf in die vorm van kommas geskei waardes. 33 00:01:39,810 --> 00:01:42,080 Om dit te doen, gaan ons om te gebruik drie nuwe funksies - 34 00:01:42,080 --> 00:01:47,450 F oop, F printf, en F naby, wat 'n lêer oop te maak, druk na 'n lêer, en 35 00:01:47,450 --> 00:01:48,440 sluit 'n lêer. 36 00:01:48,440 --> 00:01:49,690 Ons kan hulle gebruik soos volg. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> FILE, in hoofletters, wat is ietwat van ' 'n nuuskierigheid in C, kry FILE fopen 39 00:01:58,240 --> 00:02:03,020 quote unquote en nou 'n naam vir die dien, sê, students.CSV, maar ek kon 40 00:02:03,020 --> 00:02:08,150 noem dit die meeste nie, komma en nou is ek gaan spesifiseer 'n enkele w binnekant 41 00:02:08,150 --> 00:02:09,390 dubbele aanhalingstekens. 42 00:02:09,390 --> 00:02:13,290 W, as jy dalk al kon raai, beteken dat fopen moet hierdie lêer oop te maak 43 00:02:13,290 --> 00:02:17,360 genoem Students.CSV vir die skryf van so dat ons eintlik kan spaar 44 00:02:17,360 --> 00:02:19,370 inhoud om dit te. 45 00:02:19,370 --> 00:02:23,080 >> Kom ons volgende tjek as lêer is nie gelyk aan nul. 46 00:02:23,080 --> 00:02:25,860 Want as dit is, iets het waarskynlik verkeerd geloop het in welke geval ons 47 00:02:25,860 --> 00:02:28,340 moet nie voortgaan om te probeer enigiets te druk om dit te. 48 00:02:28,340 --> 00:02:33,400 Maar as dit is nie nul is, dan binnekant van die krulhakies ek gaan Itereer 49 00:02:33,400 --> 00:02:38,030 van i gelyk aan 0 op tot studente, en ek gaan 50 00:02:38,030 --> 00:02:40,180 inkrementeer i op elke iterasie. 51 00:02:40,180 --> 00:02:45,750 En binnekant van die loop, gaan ek fprintf so te druk na 'n lêer - 52 00:02:45,750 --> 00:02:47,940 spesifiek die een Ek het reeds geopen - 53 00:02:47,940 --> 00:02:54,650 'n string wat lyk soos hierdie% s,% s backslash n noue kwotasie. 54 00:02:54,650 --> 00:02:58,790 >> En nou wil ek te prop in elkeen van diegene plekhouers die werklike waardes 55 00:02:58,790 --> 00:03:03,390 van 'n student se naam en 'n huis gebruik van die dot-operateur. 56 00:03:03,390 --> 00:03:10,030 Studente bracket i.name, studente bracket i.house naby hakie 57 00:03:10,030 --> 00:03:11,230 semi-kolon. 58 00:03:11,230 --> 00:03:16,180 Nou onder om die lus, ek is eenvoudig gaan fclose lêer te noem in volgorde 59 00:03:16,180 --> 00:03:18,520 om uiteindelik maak die lêer. 60 00:03:18,520 --> 00:03:21,360 >> Nou toe ek hierdie program, moet ek nie eintlik enigiets te sien op die 61 00:03:21,360 --> 00:03:25,010 skerm, maar ek moet na die uitvoer van hierdie program 'n lêer genaamd 62 00:03:25,010 --> 00:03:29,130 Students.CSV in dieselfde gids wat Ek loop die opdrag in dat indien 63 00:03:29,130 --> 00:03:32,480 bevat 'n komma geskei lys van waardes. 64 00:03:32,480 --> 00:03:34,790 Kom ons neem 'n blik. 65 00:03:34,790 --> 00:03:41,690 >> Maak structs 1. / Structs1 student se noem, kom ons sê David, 66 00:03:41,690 --> 00:03:43,140 hy sal woon in Mather. 67 00:03:43,140 --> 00:03:46,890 Student se naam, kom ons sê, Lauren, sy sal woon in Leverett. 68 00:03:46,890 --> 00:03:50,800 Student se naam, kom ons sê, Rob, hy sal woon in Kirkland. 69 00:03:50,800 --> 00:03:54,050 Nou, weer, soos verwag, niks verskyn gebeur het nie, maar laat my 70 00:03:54,050 --> 00:03:58,790 gaan voort by die opdrag prompt en tik g wysig students.CSV in die hoop dat 71 00:03:58,790 --> 00:04:00,850 die lêer inderdaad bestaan. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ingaan en inderdaad, kennis dat 'n lêer met suiwer 73 00:04:07,010 --> 00:04:11,320 teks, maar die teks geskei deur kommas vir elke veld, bestaan ​​wel. 74 00:04:11,320 --> 00:04:14,530 En as ons gebruik, nie die CS50 toestel, maar 'n meer bekende Mac of 75 00:04:14,530 --> 00:04:18,080 PC, dit blyk dat ons kan inderdaad Maak die CSV-lêer met 'n meer 76 00:04:18,080 --> 00:04:20,400 vertroud program soos Excel of nommers. 77 00:04:20,400 --> 00:04:22,906