1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> Pranešėjas: Iki šiol, tai tikėtina, kad dauguma iš jūsų programų 3 00:00:07,870 --> 00:00:10,170 buvo šiek tiek efemeriška. 4 00:00:10,170 --> 00:00:13,310 Jūs paleisti kaip Mario ar gobšus programą. 5 00:00:13,310 --> 00:00:17,350 Tai daro kažką, tai gal paragina dėl kokios nors informacijos vartotojas, 6 00:00:17,350 --> 00:00:20,400 spausdinti tam tikrą produkciją į ekraną, bet tada, kai jūsų programa baigėsi, 7 00:00:20,400 --> 00:00:23,252 ten tikrai nėra įrodymų, kad jis buvo kada paleisti į pirmąją vietą. 8 00:00:23,252 --> 00:00:25,960 Aš turiu galvoje, tikrai, galite nepaliko ji atidaryti terminalo langą, 9 00:00:25,960 --> 00:00:29,770 bet jei išvalyti ekraną, ten tikrai jokių įrodymų, kad jis egzistavo. 10 00:00:29,770 --> 00:00:33,720 Neturime, laikymo priemones patvari informacija, informacija 11 00:00:33,720 --> 00:00:36,890 kad egzistuoja po mūsų programa nustojo veikti, 12 00:00:36,890 --> 00:00:39,241 ar mes ne iki šio taško. 13 00:00:39,241 --> 00:00:41,490 Laimei, nors c ar teikia mums galimybę 14 00:00:41,490 --> 00:00:44,220 tai padaryti įgyvendinant kažkas vadinamas 15 00:00:44,220 --> 00:00:48,330 failas, struktūra, kuri iš esmės atstovauja failą, kad jums būtų dvigubai 16 00:00:48,330 --> 00:00:53,826 spustelėkite ant jūsų kompiuterio, jei esate naudojamas grafinę vartotojo aplinką. 17 00:00:53,826 --> 00:00:55,700 Paprastai, kai darbo su C, mes iš tikrųjų 18 00:00:55,700 --> 00:00:59,965 bus dirbti su Pointeriai files-- failą stars-- 19 00:00:59,965 --> 00:01:02,090 išskyrus trupučiu kai kalbame apie pora 20 00:01:02,090 --> 00:01:04,560 funkcijų, kad dirbti su failų rodykles. 21 00:01:04,560 --> 00:01:08,990 Jums nereikia turėti tikrai iškasti per giliai į supratimo patarimų 22 00:01:08,990 --> 00:01:09,730 patys. 23 00:01:09,730 --> 00:01:12,870 Yra šiek tiek smulkutis šiek tiek kur mes kalbame apie juos, 24 00:01:12,870 --> 00:01:18,090 bet apskritai pateikti patarimų ir rodykles, o tarpusavyje, 25 00:01:18,090 --> 00:01:20,290 yra ne visai tas pats dalykas. 26 00:01:20,290 --> 00:01:22,440 >> Dabar ką aš turiu galvoje, kai Sakau nuolatinius duomenis? 27 00:01:22,440 --> 00:01:23,650 Kas yra nuolatiniai duomenys? 28 00:01:23,650 --> 00:01:25,232 Kodėl mums rūpi tai? 29 00:01:25,232 --> 00:01:27,190 Pasakyti, kad, pavyzdžiui, vykdote programą 30 00:01:27,190 --> 00:01:29,850 ar jūs perrašyti programa, kuri yra žaidimas, 31 00:01:29,850 --> 00:01:32,960 ir norite sekti Visų į vartotojo juda 32 00:01:32,960 --> 00:01:36,620 taip, kad gal jei kažkas negerai, galite peržiūrėti Po žaidimo failą. 33 00:01:36,620 --> 00:01:39,970 Štai ką mes turime omenyje, kai mes kalbėti apie nuolatinius duomenis. 34 00:01:39,970 --> 00:01:43,930 >> Jei veikia žinoma, jūsų programa, failas yra sukurta. 35 00:01:43,930 --> 00:01:45,680 Ir kai jūsų programa nustojo veikti, 36 00:01:45,680 --> 00:01:48,689 kad byla vis dar egzistuoja jūsų sistemoje. 37 00:01:48,689 --> 00:01:50,230 Ir mes galime pažvelgti į jį ir jį išnagrinėti. 38 00:01:50,230 --> 00:01:53,670 Ir taip, kad programa būtų nustatytas sukūrė keletą nuolatinių duomenis, 39 00:01:53,670 --> 00:01:57,390 duomenys egzistuoja pasibaigus programai baigė veikia. 40 00:01:57,390 --> 00:02:02,320 >> Dabar visi iš šių funkcijų, kurios dirba su failų kūrimo ir manipuliuoti 41 00:02:02,320 --> 00:02:04,940 juos įvairiais būdais gyvena standartiniame io.h, 42 00:02:04,940 --> 00:02:08,210 kuris yra galva failas, jūs greičiausiai buvo svaras 43 00:02:08,210 --> 00:02:10,910 tame tarpe ir gana viršuje kiek visi jūsų programas 44 00:02:10,910 --> 00:02:14,130 nes jame yra vienas iš Naudingiausi funkcijos mums 45 00:02:14,130 --> 00:02:16,130 printf, kad taip pat leidžia gyvena standartinį io.h. 46 00:02:16,130 --> 00:02:20,400 Taigi jums nereikia svaras yra visi papildomi failai tikriausiai 47 00:02:20,400 --> 00:02:23,540 siekiant dirbti su failų rodykles. 48 00:02:23,540 --> 00:02:29,980 >> Dabar kiekvieną failą žymeklis funkcija, arba kiekvieną failą I / O, įvesties ir išvesties 49 00:02:29,980 --> 00:02:33,310 funkciją, priima kaip vienas jos parametrus ar sąnaudų 50 00:02:33,310 --> 00:02:35,822 failas pointer-- išskyrus vieną, fopen, kuris 51 00:02:35,822 --> 00:02:38,280 yra tai, ką jūs naudojate gauti failą žymeklis į pirmąją vietą. 52 00:02:38,280 --> 00:02:41,010 Bet kai jūs atidaryta failą ir gausite failų patarimų, 53 00:02:41,010 --> 00:02:43,510 tada galite perduoti juos kaip argumentai įvairių funkcijų 54 00:02:43,510 --> 00:02:46,720 mes ketiname kalbėti apie šiandien, taip pat daugelis kitų 55 00:02:46,720 --> 00:02:48,520 taip, kad jūs galite dirbti su failais. 56 00:02:48,520 --> 00:02:50,980 >> Taigi yra šeši gana bendrieji pagrindiniai tie, 57 00:02:50,980 --> 00:02:52,870 kad mes ketiname kalbėti apie šiandien. 58 00:02:52,870 --> 00:02:57,160 fopen ir jos kompanionas funkcija fclose, fgetc 59 00:02:57,160 --> 00:03:02,670 ir jos kompanionas funkcija fputc, ir fread ir jos kompanionas funkcija, 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 Taigi galime gauti tiesiai į jį. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- ką jis daro? 63 00:03:07,050 --> 00:03:10,050 Na, tai atidaro failą ir jį suteikia jums failo žymiklį į jį, 64 00:03:10,050 --> 00:03:14,000 kad tada galite naudoti, kad failo rodyklės kaip argumentą 65 00:03:14,000 --> 00:03:16,730 bet kita bylos I / O funkcijos. 66 00:03:16,730 --> 00:03:19,100 Svarbiausia prisiminti su fopen 67 00:03:19,100 --> 00:03:24,222 yra tai, kad po to, kai atidarytas byla arba pagaminti kaip vieną skambutį čia 68 00:03:24,222 --> 00:03:26,930 jums reikia įsitikinkite, kad kad žymeklis, kad jūs turite grįžti 69 00:03:26,930 --> 00:03:28,320 nėra lygus nuliui. 70 00:03:28,320 --> 00:03:31,320 Jei neturite stebėjo ant vaizdo patarimų, tai gali prasmės. 71 00:03:31,320 --> 00:03:35,639 Bet jei pabandyti ir dereference null pointer Prisiminkite, 72 00:03:35,639 --> 00:03:38,180 jūsų programa tikriausiai patirs segmentacijos [nesigirdi]. 73 00:03:38,180 --> 00:03:40,540 Mes norime įsitikinti, kad mes gavo teisėtą rodyklę atgal. 74 00:03:40,540 --> 00:03:43,665 Dauguma laiko mes Dotarłeś teisėtą žymeklį atgal 75 00:03:43,665 --> 00:03:45,280 ir ji negali būti problema. 76 00:03:45,280 --> 00:03:46,760 >> Taigi, kaip mes Paskambinkite fopen? 77 00:03:46,760 --> 00:03:48,051 Tai atrodo gana daug, kaip šis. 78 00:03:48,051 --> 00:03:52,690 Failo žvaigždė ptr-- PTR yra bendrinis pavadinimas failui pointer-- fopen 79 00:03:52,690 --> 00:03:57,300 ir mes pereiname iš dviejų dalykų, failo pavadinimą ir operacija norime atlikti. 80 00:03:57,300 --> 00:04:01,690 Taigi mes galime turėti skambutį, kad atrodo this-- failą žvaigždė PTR 1 lygu fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 Ir operacija aš pasirinkta r. 83 00:04:07,020 --> 00:04:08,639 >> Taigi, ką jūs manote r čia? 84 00:04:08,639 --> 00:04:11,180 Kokie rūšių dalykų mes galėtų daryti failus? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 Taigi r operacija, kad mes pasirinkti, kada mes norime skaityti failą. 87 00:04:17,500 --> 00:04:20,260 Taigi mes norėtume iš esmės, kai mes kaip šis skambutį 88 00:04:20,260 --> 00:04:25,440 reikia gauti sau failo žymiklį taip, kad galėtume perskaityti informaciją 89 00:04:25,440 --> 00:04:27,770 nuo file1.txt. 90 00:04:27,770 --> 00:04:34,190 >> Be to, mes galime atidaryti failo 2.txt rašyti ir todėl mes galime perduoti ptr2, 91 00:04:34,190 --> 00:04:38,210 failas žymeklis aš čia sukurta, kaip į bet kokią funkciją argumentą, kad 92 00:04:38,210 --> 00:04:40,080 rašo informaciją į failą. 93 00:04:40,080 --> 00:04:43,767 Ir panašus į raštu, yra taip pat galimybė pridėti, a. 94 00:04:43,767 --> 00:04:45,600 Skirtumas tarp raštu ir papildymo 95 00:04:45,600 --> 00:04:50,920 yra ta, kad kai rašote į failą, jei skambinate į fopen rašymui 96 00:04:50,920 --> 00:04:54,761 ir kad failas jau egzistuoja, tai ketina perrašyti visą failą. 97 00:04:54,761 --> 00:04:56,510 Jis ketina pradėti pačioje pradžioje, 98 00:04:56,510 --> 00:04:58,820 išbraukiant visą informaciją tai jau ten. 99 00:04:58,820 --> 00:05:02,210 >> Kadangi jei atidarote jį pridedant, jis bus eiti į failo pabaigą 100 00:05:02,210 --> 00:05:04,340 jei ten jau tekstas tai ar jame pateikta informacija, 101 00:05:04,340 --> 00:05:06,040 ir jis bus tada pradėti raštu iš ten. 102 00:05:06,040 --> 00:05:08,570 Taigi, jūs ne prarasti bet kurį iš informacija baigsite anksčiau. 103 00:05:08,570 --> 00:05:12,110 Nesvarbu, ar jūs norite rašyti arba pridėti rūšiuoti, priklauso nuo situacijos. 104 00:05:12,110 --> 00:05:16,840 Bet jūs tikriausiai žinote, ką teisė operacija, kai ateis laikas. 105 00:05:16,840 --> 00:05:18,020 Štai fopen. 106 00:05:18,020 --> 00:05:18,930 >> Ką apie fclose? 107 00:05:18,930 --> 00:05:21,600 Na, gana paprasta, fclose tik priima failo rodyklės. 108 00:05:21,600 --> 00:05:24,000 Ir kaip galima tikėtis, jis užbaigia bylą. 109 00:05:24,000 --> 00:05:29,270 Ir kai mes uždarytas failą, mes negalime atlikti bet daugiau failą I / O funkcijos 110 00:05:29,270 --> 00:05:31,420 skaityti arba rašyti, dėl šios bylos. 111 00:05:31,420 --> 00:05:36,444 Turime iš naujo atidaryti pateikti kitą kartą, kad 112 00:05:36,444 --> 00:05:38,610 toliau dirbti su jį naudojant I / O funkcijas. 113 00:05:38,610 --> 00:05:41,520 Taigi fclose reiškia, kad mes baigsime dirbti su šiuo failo. 114 00:05:41,520 --> 00:05:44,690 Ir visi mes turime praeiti yra iš failo žymiklį pavadinimą. 115 00:05:44,690 --> 00:05:50,010 Tad pora skaidres prieš, mes fopened failą 1 taškas teksto skaitymo 116 00:05:50,010 --> 00:05:52,854 ir mes priskirti, kad byla žymiklį ptr1. 117 00:05:52,854 --> 00:05:55,020 Dabar mes nusprendėme mes padaryta skaityti iš šio failo. 118 00:05:55,020 --> 00:05:56,561 Mums nereikia daryti, bet daugiau su juo. 119 00:05:56,561 --> 00:05:58,890 Mes galime tik fclose ptr1. 120 00:05:58,890 --> 00:06:01,950 Ir panašiai, galėtų mums fclose kitus tie. 121 00:06:01,950 --> 00:06:02,450 Gerai. 122 00:06:02,450 --> 00:06:03,700 Taigi, kad atidarymo ir uždarymo. 123 00:06:03,700 --> 00:06:05,780 Tie, yra du pagrindiniai pradedant operacijas. 124 00:06:05,780 --> 00:06:08,050 >> Dabar mes norime iš tikrųjų padaryti įdomių dalykų, 125 00:06:08,050 --> 00:06:11,940 ir pirmoji funkcija, kuri mes matyti, kad darys tai fgetc-- 126 00:06:11,940 --> 00:06:14,110 file gauti charakterį. 127 00:06:14,110 --> 00:06:17,350 Štai ką fgetc paprastai būtų išversti į. 128 00:06:17,350 --> 00:06:20,190 Jos tikslas gyvenime yra skaityti kitą simbolį, 129 00:06:20,190 --> 00:06:22,079 arba jei tai yra jūsų labai Pirmasis kvietimas fgetc 130 00:06:22,079 --> 00:06:23,870 už tam tikrą failą, pirmasis simbolis. 131 00:06:23,870 --> 00:06:26,210 Bet tada po to, jūs gaunate kitą vieną, 132 00:06:26,210 --> 00:06:31,500 jau kitą pobūdis tą bylą, ir saugo jį simbolių kintamąjį. 133 00:06:31,500 --> 00:06:34,490 Kaip mes padarėme čia char CH lygus fgetc, 134 00:06:34,490 --> 00:06:36,389 pereiti į failo žymiklį vardu. 135 00:06:36,389 --> 00:06:38,180 Vėlgi, tai labai Svarbu čia prisiminti 136 00:06:38,180 --> 00:06:41,430 kad siekiant turėti ši operacija pavyks, 137 00:06:41,430 --> 00:06:45,690 Pats failas žymeklis must've buvo atidarytas svarstymą. 138 00:06:45,690 --> 00:06:50,589 Mes negalime skaityti simbolį iš failo žymeklis, kad mes atidarėme rašymui. 139 00:06:50,589 --> 00:06:52,630 Štai vienas iš apribojimai fopen, tiesa? 140 00:06:52,630 --> 00:06:55,470 Mes turime apriboti save tik atliekant 141 00:06:55,470 --> 00:06:57,710 vienos operacijos su vienu failo rodyklę. 142 00:06:57,710 --> 00:07:00,220 Jei mes norėjome skaityti ir rašyti iš to paties failo, 143 00:07:00,220 --> 00:07:03,840 mes turėtume atidaryti du atskiri failų rodykles į tą pačią file-- 144 00:07:03,840 --> 00:07:05,670 vienas skaityti, po vieną raštu. 145 00:07:05,670 --> 00:07:08,400 >> Taigi dar kartą, vienintelė priežastis Atnešu, kad iki šiol yra 146 00:07:08,400 --> 00:07:11,920 nes jei mes ketiname skambinti į fgetc, kad failas žymeklis must've 147 00:07:11,920 --> 00:07:14,172 buvo atidarytas svarstymą. 148 00:07:14,172 --> 00:07:15,880 Ir tada gana paprastai, visi mes turime daryti 149 00:07:15,880 --> 00:07:17,546 yra perduoti į failo žymiklį vardu. 150 00:07:17,546 --> 00:07:21,060 Taigi char CH lygus fgetc ptr1. 151 00:07:21,060 --> 00:07:23,200 >> Štai ketinate gauti su mumis Kitas character-- 152 00:07:23,200 --> 00:07:25,575 arba dar kartą, jei tai yra pirmasis laikas mes padarėme šį kvietimą, 153 00:07:25,575 --> 00:07:29,750 pirmasis character-- bet kokio failas yra nurodomas ptr1. 154 00:07:29,750 --> 00:07:32,210 Prisiminkite, kad tai buvo failas 1 taškas tekstas. 155 00:07:32,210 --> 00:07:36,490 Tai gausite pirmąjį požymį, kad ir mes laikyti jį kintamojo ch. 156 00:07:36,490 --> 00:07:37,941 Gana paprasta. 157 00:07:37,941 --> 00:07:40,190 Taigi mes tik pažvelgė trijų funkcijos ir jau mes 158 00:07:40,190 --> 00:07:43,070 galime padaryti kažką gana tvarkingas. 159 00:07:43,070 --> 00:07:46,320 >> Taigi, jei mes priimsime šį gebėjimą gauti simbolį 160 00:07:46,320 --> 00:07:48,943 ir mes kilpa it-- todėl mes toliau gauti simboliai 161 00:07:48,943 --> 00:07:51,390 iš failo daugiau ir daugiau ir over-- dabar mes 162 00:07:51,390 --> 00:07:54,500 gali skaityti kiekvienas požymis failą. 163 00:07:54,500 --> 00:07:58,670 Ir jei mes spausdinti kiekvieną simbolį iš karto, kai mes jį perskaityti, 164 00:07:58,670 --> 00:08:01,960 mes dabar skaityti iš failo ir spausdinami jos turinį į ekraną. 165 00:08:01,960 --> 00:08:05,610 Mes efektyviai sujungiamos kad failas ekrane. 166 00:08:05,610 --> 00:08:09,670 Ir tai, ką "Linux" komanda cat daro. 167 00:08:09,670 --> 00:08:13,250 >> Jei įvesite Katė failo vardą, tai bus išspausdinti visą turinį 168 00:08:13,250 --> 00:08:15,160 iš savo terminalo lange failą. 169 00:08:15,160 --> 00:08:19,010 Ir taip šis mažas kilpa čia tik trys eilutės kodas, 170 00:08:19,010 --> 00:08:23,270 bet ji veiksmingai dublikatai Linux komanda cat. 171 00:08:23,270 --> 00:08:25,210 Taigi tai sintaksė galėtų atrodo šiek tiek keistai, 172 00:08:25,210 --> 00:08:26,670 bet čia tai, kas vyksta čia. 173 00:08:26,670 --> 00:08:31,460 Nors CH lygus fgetc, PTR nėra lygus EOF-- tai visai kąsnis, 174 00:08:31,460 --> 00:08:34,669 bet tegul ją padalyti tik todėl aišku, sintaksę. 175 00:08:34,669 --> 00:08:37,169 Aš konsoliduoti ją už erdvėje sumetimais, 176 00:08:37,169 --> 00:08:39,049 nors tai šiek tiek sintaksiškai sudėtinga. 177 00:08:39,049 --> 00:08:41,194 >> Taigi ši dalis žalia dešinėje Dabar, kas jis daro? 178 00:08:41,194 --> 00:08:42,860 Na, tai tik mūsų fgetc skambutis, tiesa? 179 00:08:42,860 --> 00:08:44,530 Mes matėme, kad prieš. 180 00:08:44,530 --> 00:08:49,500 Tai gauti vieną personažas iš bylos. 181 00:08:49,500 --> 00:08:53,220 Tada mes lyginame charakteris prieš EOF. 182 00:08:53,220 --> 00:08:57,470 EOF yra speciali vertė tai apibrėžta standarte io.h, kuris 183 00:08:57,470 --> 00:08:59,390 yra failo charakterio pabaiga. 184 00:08:59,390 --> 00:09:03,450 Taigi, iš esmės, kas nutiks Ar tai kilpa bus skaityti simbolį, 185 00:09:03,450 --> 00:09:07,445 palyginti ją su EOF, The failo pabaiga pobūdžio. 186 00:09:07,445 --> 00:09:10,070 Jei jie nesutampa, todėl mes turime ne pasiekė failo pabaigą, 187 00:09:10,070 --> 00:09:11,490 mes spausdinti šį pobūdžio. 188 00:09:11,490 --> 00:09:13,740 Tada mes grįžti į vėl pradeda kilpos. 189 00:09:13,740 --> 00:09:18,310 Mes gausite simbolį, patikrinkite prieš EOF, atspausdinti jį, ir tt 190 00:09:18,310 --> 00:09:21,094 ir taip toliau, ir taip toliau, kilpų per, kad tokiu būdu 191 00:09:21,094 --> 00:09:22,760 kol mes pasiekėme failo pabaigą. 192 00:09:22,760 --> 00:09:24,593 Ir tada pagal tą punktą, mes jau atspausdinta 193 00:09:24,593 --> 00:09:26,210 iš visą turinį į failą. 194 00:09:26,210 --> 00:09:29,450 Taigi dar kartą, mes tik matėme fopen, fclose ir fgetc 195 00:09:29,450 --> 00:09:34,950 ir jau galime dubliuoti Linux terminalas komanda. 196 00:09:34,950 --> 00:09:38,850 >> Kaip minėjau pradžioje, mes turėjome fgetc ir fputc, 197 00:09:38,850 --> 00:09:41,860 ir fputc buvo kompanionas funkcija fgetc. 198 00:09:41,860 --> 00:09:44,880 Ir taip, kaip jūs gali įsivaizduoti, tai yra rašymo ekvivalentas. 199 00:09:44,880 --> 00:09:49,440 Jis leidžia mums parašyti vieną simbolį į failą. 200 00:09:49,440 --> 00:09:53,290 >> Vėlgi, įspėjimas yra, tik kaip tai buvo su fgetc, failas 201 00:09:53,290 --> 00:09:56,660 kad mes raštu must've buvo atidarytas raštu arba pridedant. 202 00:09:56,660 --> 00:10:00,820 Jei mes stengiamės ir naudoti fputc ant failo kad mes atidaryti skaitymui, 203 00:10:00,820 --> 00:10:02,760 mes ketiname kenčia padaryta klaida tiek. 204 00:10:02,760 --> 00:10:04,440 Tačiau skambutis yra gana paprasta. 205 00:10:04,440 --> 00:10:08,000 fputc kapitalu ptr2 visi kad ketina padaryti, tai jis 206 00:10:08,000 --> 00:10:12,040 ketina rašyti laišką į A į failą 2 taškais 207 00:10:12,040 --> 00:10:14,760 tekstas, kuris buvo pavadinimas failą, mes atidarėme ir priskirti 208 00:10:14,760 --> 00:10:17,280 rodyklė į ptr2. 209 00:10:17,280 --> 00:10:20,430 Taigi mes ketiname parašyti kapitalo A iki failą 2 dot tekstą. 210 00:10:20,430 --> 00:10:24,592 Ir mes parašyti šauktuką rodo, kad bylos 3 taškais 211 00:10:24,592 --> 00:10:27,330 tekstas, kuris buvo pažymėta, kad iki ptr3. 212 00:10:27,330 --> 00:10:29,730 Taigi dar kartą, gana paprasta čia. 213 00:10:29,730 --> 00:10:32,727 >> Bet dabar mes galime padaryti kitą dalyką. 214 00:10:32,727 --> 00:10:34,560 Mes turime šį pavyzdį mes buvome tik vyksta per 215 00:10:34,560 --> 00:10:38,950 apie galimybę atkartoti katė "Linux" komandą, vienas, kad spausdina 216 00:10:38,950 --> 00:10:40,500 ekrane. 217 00:10:40,500 --> 00:10:43,510 Na, dabar, kad mes turime galimybę skaityti simbolius iš failų 218 00:10:43,510 --> 00:10:46,590 ir rašyti simbolių failus, kodėl ne mes tiesiog pakeisti, kad 219 00:10:46,590 --> 00:10:50,720 skambinti printf, ragindamas fputc. 220 00:10:50,720 --> 00:10:54,090 >> Ir dabar mes dubliuoti cp, labai paprastas Linux komandinės 221 00:10:54,090 --> 00:10:59,100 kad mes kalbėjome apie kelias ilgas prieš Linux komandas vaizdo. 222 00:10:59,100 --> 00:11:01,070 Mes Veiksmingai dubliuoti, kad čia. 223 00:11:01,070 --> 00:11:04,790 Mes skaityti simbolį ir tada mes Rašydamas, kad charakterį į kitą failą. 224 00:11:04,790 --> 00:11:07,660 Skaitymas iš vieno failo, rašymo į kitą, per ir per 225 00:11:07,660 --> 00:11:11,350 ir vėl, kol mes hit EOF. 226 00:11:11,350 --> 00:11:14,250 Mes turime prie pabaigos file mes bandome kopijuoti iš. 227 00:11:14,250 --> 00:11:18,500 Ir kad mes parašėme visi simbolių turime failo 228 00:11:18,500 --> 00:11:19,500 kad mes raštu. 229 00:11:19,500 --> 00:11:24,270 Taigi tai yra CP, Linux kopija komanda. 230 00:11:24,270 --> 00:11:26,550 >> Pačioje pradžioje Šiame vaizdo, aš turėjau įspėjimu 231 00:11:26,550 --> 00:11:29,840 kad mes pakalbėti Šiek tiek apie rodykles. 232 00:11:29,840 --> 00:11:32,480 Čia yra specialiai kur mes ketiname kalbėti apie rodykles 233 00:11:32,480 --> 00:11:34,800 be to, byla patarimų. 234 00:11:34,800 --> 00:11:37,870 Taigi ši funkcija atrodo rūšies baisu. 235 00:11:37,870 --> 00:11:39,120 Jis gavo kelis parametrus. 236 00:11:39,120 --> 00:11:40,430 Yra daug vyksta čia. 237 00:11:40,430 --> 00:11:42,760 Yra įvairių daug spalvos ir tekstų. 238 00:11:42,760 --> 00:11:47,100 Bet iš tikrųjų, tai tik bendrinis versija fgetc 239 00:11:47,100 --> 00:11:50,110 kad leidžia mums gauti bet informacijos kiekis. 240 00:11:50,110 --> 00:11:53,560 Jis gali būti šiek tiek neefektyvus, jei mes gauti simbolius vienu metu, 241 00:11:53,560 --> 00:11:55,770 Iteracja per failas vienas simbolis vienu metu. 242 00:11:55,770 --> 00:12:00,230 Ar nebūtų gražiau gauti 100 vienu metu arba 500 vienu metu? 243 00:12:00,230 --> 00:12:03,250 >> Na, fread ir jos kompanionas funkcija fwrite, kuri mes kalbame apie 244 00:12:03,250 --> 00:12:05,490 per sekundę, leiskite mums padaryti tik tai. 245 00:12:05,490 --> 00:12:08,480 Mes galime skaityti savavališkai sumą informaciją iš failo 246 00:12:08,480 --> 00:12:10,290 ir mes saugome jį kažkur laikinai. 247 00:12:10,290 --> 00:12:12,980 Vietoj galėtų tik tilpti į vieną kintamąjį, 248 00:12:12,980 --> 00:12:15,790 mes gali tekti laikyti jį masyvą. 249 00:12:15,790 --> 00:12:19,980 Ir taip, mes pereiname iš keturių argumentai fread-- rodyklę 250 00:12:19,980 --> 00:12:23,940 į vietą, kurioje mes ketina saugoti informaciją, 251 00:12:23,940 --> 00:12:29,180 kaip didelis kiekvieną informacijos vienetą bus, kiek vienetų informacijos 252 00:12:29,180 --> 00:12:35,192 mes norime įsigyti, o iš kuris failas norime juos gauti. 253 00:12:35,192 --> 00:12:37,150 Turbūt geriausiai iliustruoja su pavyzdyje. 254 00:12:37,150 --> 00:12:41,640 Taigi tarkime, kad mes pareiškiame kaip 10 skaičių masyvas. 255 00:12:41,640 --> 00:12:45,080 Mes ką tik paskelbė dėl kamino savavališkai int ARR 10. 256 00:12:45,080 --> 00:12:46,970 Taigi tai gana paprasta. 257 00:12:46,970 --> 00:12:51,970 Dabar, ką mes darome, nors yra frecall yra mes skaityti dydį int 258 00:12:51,970 --> 00:12:54,180 kartų 10 baitų informacijos. 259 00:12:54,180 --> 00:12:59,040 Dydis int būties four-- tai iš in c sveikojo skaičiaus dydis. 260 00:12:59,040 --> 00:13:02,790 >> Taigi, ką mes darome, yra mes skaityti 40 baitų verta informacijos 261 00:13:02,790 --> 00:13:05,850 iš failo, į kurį nurodo PTR. 262 00:13:05,850 --> 00:13:08,600 Ir mes laikyti tie 40 baitų kažkur 263 00:13:08,600 --> 00:13:12,080 kur mes atidėtos 40 baitų verta atmintyje. 264 00:13:12,080 --> 00:13:15,970 Laimei, mes jau padaryta, kad deklaruojant aranžuotė, kad masyvas teisę ten. 265 00:13:15,970 --> 00:13:19,770 Tai galima laikyti 10 keturių baitų vienetų. 266 00:13:19,770 --> 00:13:22,860 Taigi, iš viso, ji gali turėti 40 baitų verta informacija. 267 00:13:22,860 --> 00:13:26,540 Ir mes dabar skaito 40 baitų informaciją iš failo, 268 00:13:26,540 --> 00:13:30,330 ir mes ją saugoti ARR. 269 00:13:30,330 --> 00:13:35,470 >> Prisiminkite, iš ant rodyklės vaizdo, kad iš masyvo, pavyzdžiui, ARR vardas, 270 00:13:35,470 --> 00:13:38,370 yra tikrai tik rodyklė jo pirmojo elemento. 271 00:13:38,370 --> 00:13:43,680 Taigi, kai mes pereiti į ARR ten, mes yra, iš tiesų, einančios į rodyklė. 272 00:13:43,680 --> 00:13:46,120 >> Panašiai mes galime padaryti this-- mes nebūtinai 273 00:13:46,120 --> 00:13:51,200 reikia išsaugoti mūsų buferis ant kamino. 274 00:13:51,200 --> 00:13:54,990 Mes taip pat gali dinamiškai paskirstyti buferis, kaip šis, naudojant malloc. 275 00:13:54,990 --> 00:13:57,340 Atminkite, kad, kai mes dinamiškai paskirstyti atmintį, 276 00:13:57,340 --> 00:14:00,550 mes taupyti ant krūva, o ne krūvą. 277 00:14:00,550 --> 00:14:02,110 Bet tai dar buferio. 278 00:14:02,110 --> 00:14:06,810 >> Ji vis dar, šiuo atveju, yra turintis 640 baitų informacijos 279 00:14:06,810 --> 00:14:09,230 nes dvigubas užima aštuoni baitai. 280 00:14:09,230 --> 00:14:11,570 Ir mes prašome už 80 iš jų. 281 00:14:11,570 --> 00:14:13,770 Mes norime turėti erdvę surengti 80 dviviečiai kambariai. 282 00:14:13,770 --> 00:14:17,210 Taigi 80 kartų 8 640 baitų informacijos. 283 00:14:17,210 --> 00:14:21,880 Ir tai kvietimas fread yra rinkti 640 baitų informacijos 284 00:14:21,880 --> 00:14:27,770 nuo failas, į kurį nurodo PTR ir saugoti ją dabar arr2. 285 00:14:27,770 --> 00:14:32,770 >> Dabar mes taip pat galime traktuoti fread kaip skambučio į fgetc. 286 00:14:32,770 --> 00:14:37,140 Šiuo atveju mes tiesiog bando gauti vieną simbolį iš failo. 287 00:14:37,140 --> 00:14:40,070 Ir mums nereikia masyvas surengti charakterį. 288 00:14:40,070 --> 00:14:43,170 Mes galime tik laikyti jį personažas kintamasis. 289 00:14:43,170 --> 00:14:46,390 >> Laimikis, nors, yra tai, kad kai mes tiesiog kintamąjį, 290 00:14:46,390 --> 00:14:50,290 mes turime pereiti į adresas, kad kintamasis 291 00:14:50,290 --> 00:14:52,550 nes Prisiminkite, kad Pirmasis argumentas fread 292 00:14:52,550 --> 00:14:59,210 yra rodyklė į vietą, ir atminties kur norime saugoti informaciją. 293 00:14:59,210 --> 00:15:01,550 Vėl, pranešė apie pavadinimas masyvas yra žymeklis. 294 00:15:01,550 --> 00:15:04,200 Taigi mums nereikia daryti Ampersand masyvo. 295 00:15:04,200 --> 00:15:07,270 Bet c, simbolis c čia yra ne masyvo. 296 00:15:07,270 --> 00:15:08,390 Tai tiesiog kintamasis. 297 00:15:08,390 --> 00:15:11,840 Ir todėl mes turime praeiti Ženklas c nurodyti 298 00:15:11,840 --> 00:15:15,350 kad tai adresas, kur mes norime saugoti šį vieną baitą informacijos 299 00:15:15,350 --> 00:15:20,479 tai vienas personažas, kad mes rinkti iš PTR. 300 00:15:20,479 --> 00:15:22,270 Fwrite-- aš eisiu per Tai šiek tiek daugiau 301 00:15:22,270 --> 00:15:25,440 quickly-- yra gana daug Tikslus atitikmuo fread 302 00:15:25,440 --> 00:15:27,720 išskyrus tai rašyti o ne skaityti, tiesiog 303 00:15:27,720 --> 00:15:31,610 patinka other-- mes jau atidarytas ir uždaryti, gauti simbolį, 304 00:15:31,610 --> 00:15:32,530 parašyti charakterį. 305 00:15:32,530 --> 00:15:35,040 Dabar atėjo gauti savavališkas informacijos kiekis, 306 00:15:35,040 --> 00:15:37,170 teisę savavališkai informacijos kiekis. 307 00:15:37,170 --> 00:15:39,790 Taigi kaip ir anksčiau, mes galime turi 10 sveikieji masyvo 308 00:15:39,790 --> 00:15:43,210 kur jau turime saugoma informacija, galbūt. 309 00:15:43,210 --> 00:15:46,580 >> Tai tikriausiai buvo keletas kodo eilučių kad reikia eiti tarp šių dviejų 310 00:15:46,580 --> 00:15:49,990 kur aš užpildyti ARR su kažką prasmingo. 311 00:15:49,990 --> 00:15:51,880 Aš užpildyti jį su 10 skirtingų skaičių. 312 00:15:51,880 --> 00:15:54,920 Ir vietoj to, ką aš darote, yra raštu iš ARR 313 00:15:54,920 --> 00:15:58,600 ir rinkti iš ARR informaciją. 314 00:15:58,600 --> 00:16:02,390 Ir aš atsižvelgiant, kad informacija ir išleisti jį į failą. 315 00:16:02,390 --> 00:16:05,410 >> Taigi vietoj to yra iš į buferį failą, 316 00:16:05,410 --> 00:16:08,790 mes dabar vyksta nuo buferis į failą. 317 00:16:08,790 --> 00:16:10,580 Taigi tai tik atvirkščiai. 318 00:16:10,580 --> 00:16:16,680 Taigi dar kartą, kaip ir anksčiau, mes galime taip pat turi krūvą riekė atminties 319 00:16:16,680 --> 00:16:19,600 kad mes dinamiškai skiriama ir skaityti nuo 320 00:16:19,600 --> 00:16:21,570 ir rašyti, kad į failą. 321 00:16:21,570 --> 00:16:24,900 >> Ir taip pat turėti vieną kintamąjį galima laikyti vieną baitą 322 00:16:24,900 --> 00:16:27,200 informacijos, pavyzdžiui, pobūdžio. 323 00:16:27,200 --> 00:16:29,830 Bet vėl, mes turime pereiti į tos kintamojo adresas 324 00:16:29,830 --> 00:16:31,840 kai norime skaityti iš jos. 325 00:16:31,840 --> 00:16:35,280 Taigi, mes galime parašyti informacija randame tuo adresu 326 00:16:35,280 --> 00:16:39,050 į failo žymeklis, PTR. 327 00:16:39,050 --> 00:16:41,630 >> Yra daug kitų puikus failų įvesties / išvesties funkcijos 328 00:16:41,630 --> 00:16:44,650 kad daryti įvairius dalykus, be tie mes kalbėjome apie šiandien. 329 00:16:44,650 --> 00:16:46,450 A tie pora jūs galite rasti naudinga 330 00:16:46,450 --> 00:16:50,840 yra fgets ir fputs, kuris yra ekvivalentinis 331 00:16:50,840 --> 00:16:56,190 iš fgetc ir fputc bet skaityti viena eilutė iš failo. 332 00:16:56,190 --> 00:16:59,020 Vietoj to, vienas simbolis, ji bus perskaityti visą eilutę. 333 00:16:59,020 --> 00:17:02,940 fprintf, kuris iš esmės leidžia jums naudoti printf rašyti į failą. 334 00:17:02,940 --> 00:17:05,619 Taigi kaip jūs galite padaryti kintamasis Keitimas naudojant 335 00:17:05,619 --> 00:17:09,900 rezervuotų vietų proc I ir procentų d, ir taip toliau, su printf 336 00:17:09,900 --> 00:17:14,690 galite taip pat imtis printf styginių ir spausdinti kažką 337 00:17:14,690 --> 00:17:16,800 kaip kad į failą. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- jei turite DVD grotuvas yra analogija Aš paprastai naudoju here-- 339 00:17:20,720 --> 00:17:23,109 yra tarsi naudojant jūsų atgal ir pirmyn 340 00:17:23,109 --> 00:17:25,819 mygtukus, kad judėti filmą. 341 00:17:25,819 --> 00:17:28,369 Be to, galite judėti failą. 342 00:17:28,369 --> 00:17:30,250 Vienas iš dalykų, viduje kad failų struktūra 343 00:17:30,250 --> 00:17:34,270 kad c sukuria jums tai rodiklis, kur jūs esate failo. 344 00:17:34,270 --> 00:17:36,420 Ar ne labai pradžioje, baitas nulio? 345 00:17:36,420 --> 00:17:39,290 Ar ne baitas 100, baitas 1000 ir tt? 346 00:17:39,290 --> 00:17:44,340 Galite naudoti fseek savavališkai perkelti kad rodiklis pirmyn arba atgal. 347 00:17:44,340 --> 00:17:46,744 >> Ir vėl ftell, panašus į DVD grotuvas, 348 00:17:46,744 --> 00:17:49,660 yra tarsi šiek tiek laikrodžio, pasakoja Jūs, kiek minučių ir sekundžių Jūs 349 00:17:49,660 --> 00:17:52,480 yra į tam tikrą filmą. 350 00:17:52,480 --> 00:17:56,990 Panašiai ftell jus, kaip pasakoja daug baitų esate į failą. 351 00:17:56,990 --> 00:18:00,210 feof yra kita versija aptikti, ar jūs 352 00:18:00,210 --> 00:18:01,700 pasiekė failo pabaigoje. 353 00:18:01,700 --> 00:18:03,600 Ir ferror yra funkcija kad jūs galite naudoti 354 00:18:03,600 --> 00:18:06,959 siekiant nustatyti, ar kažkas turi negerai dirba su byla. 355 00:18:06,959 --> 00:18:08,750 Vėl, tai tik braižymo paviršiaus. 356 00:18:08,750 --> 00:18:12,730 Yra dar daug daugiau failų įvesties / išvesties funkcijos standarte io.h. 357 00:18:12,730 --> 00:18:16,620 Bet tai tikriausiai jums pradėjo dirbti su failų rodykles. 358 00:18:16,620 --> 00:18:17,640 Aš Doug Lloyd. 359 00:18:17,640 --> 00:18:19,750 Tai CS50. 360 00:18:19,750 --> 00:18:21,669