2 00:00:00,000 --> 00:00:02,470 >> SPEAKER 1: Lad os skrive et program, beder brugeren om navne og 3 00:00:02,470 --> 00:00:03,990 huse af tre studerende. 4 00:00:03,990 --> 00:00:07,300 Men snarere end blot udskrive deres navne og huse til skærmen, lad os 5 00:00:07,300 --> 00:00:09,660 i stedet gemmer informationen på disken. 6 00:00:09,660 --> 00:00:14,530 Med andre ord, lad os skabe, siger en CSV fil, kommaseparerede værdier 7 00:00:14,530 --> 00:00:17,720 der er faktisk bare en tekstfil, programmer som Excel eller Numbers 8 00:00:17,720 --> 00:00:21,690 kan åbne, og effektivt redde dem navne og huse permanent, således at 9 00:00:21,690 --> 00:00:23,220 vi kan gennemgå dem senere. 10 00:00:23,220 --> 00:00:25,960 >> For at gøre det, så lad os først tage et kig på nogle standardtekst kode, som jeg har 11 00:00:25,960 --> 00:00:27,650 begyndte med allerede. 12 00:00:27,650 --> 00:00:32,380 Bemærk først, at blandt de overskrifter up toppen er nu standard lib.h som 13 00:00:32,380 --> 00:00:36,710 tilfældigvis har nogle funktioner i forbindelse til fil I / O, fil input og output. 14 00:00:36,710 --> 00:00:39,560 Bemærk, at jeg også har erklæret en konstant kaldet studerende - 15 00:00:39,560 --> 00:00:42,380 i alle caps - hvis værdi er hårdt kodet som tre. 16 00:00:42,380 --> 00:00:45,820 Bemærk nu, at inde i mit hoved program, jeg erklære en vifte af 17 00:00:45,820 --> 00:00:50,270 str. tre ved hjælp af denne konstant kaldet STUDERENDE hver, hvis medlemmer er 18 00:00:50,270 --> 00:00:51,650 skriv studerende. 19 00:00:51,650 --> 00:00:56,150 >> Husk nu, at en elev vil vi definere som har et navn og et hus både 20 00:00:56,150 --> 00:01:00,410 der er strenge Pr. denne erklæring instruerer, prik h. 21 00:01:00,410 --> 00:01:04,680 Nu tilbage i structs1.c, bemærke, at jeg har en for-løkke her, der kommer til 22 00:01:04,680 --> 00:01:06,750 gentage fra nul op til tre. 23 00:01:06,750 --> 00:01:10,020 Det kommer til at bede mig om en elevs navn og en studerende hus 24 00:01:10,020 --> 00:01:12,310 igen og igen og igen. 25 00:01:12,310 --> 00:01:15,620 >> Så i bunden af ​​dette program, bemærke, at jeg har en anden for-løkke 26 00:01:15,620 --> 00:01:19,970 der kommer til at befri den i'te studerendes navn og den i'te studerendes hus i en 27 00:01:19,970 --> 00:01:21,570 tilsvarende konstrueret sløjfe. 28 00:01:21,570 --> 00:01:24,480 For at være sikker på, kunne vi kombinere disse sløjfer ind i bare én, men jeg ønskede at 29 00:01:24,480 --> 00:01:28,180 har nogle bestemte segmenter af kode af hensyn til diskussion her. 30 00:01:28,180 --> 00:01:31,920 >> Nu i mellem dem, for loops, lad os faktisk har en anden, og denne ene er 31 00:01:31,920 --> 00:01:35,210 formål i livet er at faktisk gemme alle af disse navne og huse, der er 32 00:01:35,210 --> 00:01:39,810 øjeblikket i RAM til disk i form af kommaseparerede værdier. 33 00:01:39,810 --> 00:01:42,080 At gøre det, vi kommer til at bruge tre nye funktioner - 34 00:01:42,080 --> 00:01:47,450 F åben, F printf og F tæt på, som åbne en fil, udskrive til en fil, og 35 00:01:47,450 --> 00:01:48,440 at lukke en fil. 36 00:01:48,440 --> 00:01:49,690 Vi kan bruge dem som følger. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> FILE i alle caps, hvilket er noget af en nysgerrighed i C, bliver FIL fopen 39 00:01:58,240 --> 00:02:03,020 citat citat slut og nu et navn til fil, siger, students.CSV, men jeg kunne 40 00:02:03,020 --> 00:02:08,150 kalder det mest noget, komma og nu er jeg kommer til at angive en enkelt w inde 41 00:02:08,150 --> 00:02:09,390 af anførselstegn. 42 00:02:09,390 --> 00:02:13,290 W, som du måske har gættet allerede, betyder, at fopen skal åbne denne fil 43 00:02:13,290 --> 00:02:17,360 kaldet Students.CSV for at skrive så at vi faktisk kan spare nogle 44 00:02:17,360 --> 00:02:19,370 indhold til det. 45 00:02:19,370 --> 00:02:23,080 >> Lad os næste kontrol, hvis fil er ikke lig med nul. 46 00:02:23,080 --> 00:02:25,860 For hvis det er, har noget sikkert gået galt i hvilket tilfælde vi 47 00:02:25,860 --> 00:02:28,340 bør ikke fortsætte for at prøve at udskrive noget til det. 48 00:02:28,340 --> 00:02:33,400 Men hvis det ikke er null, så indersiden af krøllede parenteser jeg har tænkt mig at gentage 49 00:02:33,400 --> 00:02:38,030 fra i lig 0 på op til STUDERENDE, og jeg har tænkt mig at 50 00:02:38,030 --> 00:02:40,180 tilvækst i på hver iteration. 51 00:02:40,180 --> 00:02:45,750 Og inde i denne løkke, vil jeg fprintf så at udskrive til en fil - 52 00:02:45,750 --> 00:02:47,940 især det ene Jeg har allerede åbnet - 53 00:02:47,940 --> 00:02:54,650 en streng, der ligner denne% s,% s backslash n tæt citat. 54 00:02:54,650 --> 00:02:58,790 >> Og nu vil jeg sætte ind på hver af disse pladsholdere de faktiske værdier 55 00:02:58,790 --> 00:03:03,390 af en elevs navn og et hus ved hjælp af dot operatør. 56 00:03:03,390 --> 00:03:10,030 Studerende beslag i.name, studerende beslag i.house luk paren 57 00:03:10,030 --> 00:03:11,230 semikolon. 58 00:03:11,230 --> 00:03:16,180 Nu under denne for-løkke, jeg er simpelthen vil kalde fclose af fil for 59 00:03:16,180 --> 00:03:18,520 til sidst at lukke filen. 60 00:03:18,520 --> 00:03:21,360 >> Nu når jeg køre dette program, skal jeg ikke faktisk se noget på 61 00:03:21,360 --> 00:03:25,010 skærmen, men jeg skulle have efter at have kørt dette program en fil kaldet 62 00:03:25,010 --> 00:03:29,130 Students.CSV i samme mappe som Jeg køre kommandoen i at skulle 63 00:03:29,130 --> 00:03:32,480 indeholde en kommasepareret listen over værdier. 64 00:03:32,480 --> 00:03:34,790 Lad os tage et kig. 65 00:03:34,790 --> 00:03:41,690 >> Gør structs 1.. / Structs1 studerendes navn, lad os sige David, 66 00:03:41,690 --> 00:03:43,140 han vil leve i Mather. 67 00:03:43,140 --> 00:03:46,890 Studerendes navn, lad os sige, Lauren, hun vil leve i Leverett. 68 00:03:46,890 --> 00:03:50,800 Studerendes navn, lad os sige, Rob, han vil leve i Kirkland. 69 00:03:50,800 --> 00:03:54,050 Nu igen, som forventet, vises der intet at være sket, men lad mig 70 00:03:54,050 --> 00:03:58,790 gå videre ved kommandoprompten og type g redigere students.CSV i håb om at 71 00:03:58,790 --> 00:04:00,850 filen faktisk eksisterer. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ENTER, og ja, bemærker, at en fil, der indeholder rent 73 00:04:07,010 --> 00:04:11,320 tekst, men tekst adskilt af kommaer for hvert felt, eksisterer faktisk. 74 00:04:11,320 --> 00:04:14,530 Og hvis vi bruger, ikke CS50 apparat, men en mere velkendt Mac eller 75 00:04:14,530 --> 00:04:18,080 PC, viser det sig, at vi kunne faktisk åbne denne CSV-fil med en mere 76 00:04:18,080 --> 00:04:20,400 velkendt program som Excel eller Numbers. 77 00:04:20,400 --> 00:04:22,906