1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> SPEAKER: Līdz šim, tas ir iespējams, ka lielākā daļa no jūsu programmas 3 00:00:07,870 --> 00:00:10,170 ir mazliet īslaicīgi. 4 00:00:10,170 --> 00:00:13,310 Jūs palaist programmu, piemēram, Mario vai mantkārīgs. 5 00:00:13,310 --> 00:00:17,350 Tas kaut ko dara, tas varbūt liek lietotājs kādu informāciju, 6 00:00:17,350 --> 00:00:20,400 drukāt kādu izejas uz ekrāna, bet tad, kad jūsu programma ir beigusies, 7 00:00:20,400 --> 00:00:23,252 tur tiešām nav pierādījumu, ka tas bija kādreiz palaist pirmajā vietā. 8 00:00:23,252 --> 00:00:25,960 Es domāju, protams, jūs varētu būt atstājuši tā atvērta termināļa logā, 9 00:00:25,960 --> 00:00:29,770 bet, ja jūs skaidri jūsu ekrāna, tur ir tiešām nav pierādījumu, ka tā pastāvējusi. 10 00:00:29,770 --> 00:00:33,720 Mums nav iespēju uzglabāt noturīgas informācija, ziņas 11 00:00:33,720 --> 00:00:36,890 ka pastāv pēc mūsu Programma ir pārtraucis darboties, 12 00:00:36,890 --> 00:00:39,241 vai mums nav līdz šim punktam. 13 00:00:39,241 --> 00:00:41,490 Par laimi, lai gan, c dara pastāstiet mums spēju 14 00:00:41,490 --> 00:00:44,220 to darīt, īstenojot kaut ko sauc 15 00:00:44,220 --> 00:00:48,330 fails, struktūru, kas būtībā apzīmē failu, jūs varētu divkāršot 16 00:00:48,330 --> 00:00:53,826 noklikšķiniet uz jūsu datora, ja jūs esat izmanto, lai grafisko lietotāja vidi. 17 00:00:53,826 --> 00:00:55,700 Parasti, strādājot ar c, mēs esam patiesībā 18 00:00:55,700 --> 00:00:59,965 būs, kas strādā ar norādes uz files-- failu stars-- 19 00:00:59,965 --> 00:01:02,090 izņemot mazliet kad mēs runājam par pāris 20 00:01:02,090 --> 00:01:04,560 no funkcijām, kas strādāt ar failu norādes. 21 00:01:04,560 --> 00:01:08,990 Jums nav nepieciešams, lai būtu patiesi zemnīca pārāk dziļi izpratne norādes 22 00:01:08,990 --> 00:01:09,730 paši. 23 00:01:09,730 --> 00:01:12,870 Tur ir maz maziņš mazliet kur mēs runājam par tiem, 24 00:01:12,870 --> 00:01:18,090 bet parasti failu norādes un norādes, bet savstarpēji saistīti, 25 00:01:18,090 --> 00:01:20,290 nav tieši tas pats. 26 00:01:20,290 --> 00:01:22,440 >> Tagad to, ko es domāju, kad Es saku noturīgus datus? 27 00:01:22,440 --> 00:01:23,650 Kas ir noturīgas dati? 28 00:01:23,650 --> 00:01:25,232 Kāpēc mēs rūpējamies par to? 29 00:01:25,232 --> 00:01:27,190 Teikt, piemēram, ka jūs darbojas programma 30 00:01:27,190 --> 00:01:29,850 vai jūs esat pārrakstīt programmu, kas ir spēle, 31 00:01:29,850 --> 00:01:32,960 un jūs vēlaties, lai izsekotu no visa lietotāja kustas 32 00:01:32,960 --> 00:01:36,620 tā ka varbūt, ja kaut kas noiet greizi, Jūs varat pārskatīt failu pēc spēles. 33 00:01:36,620 --> 00:01:39,970 Tas, ko mēs domājam, kad mēs runāt par noturīgiem datiem. 34 00:01:39,970 --> 00:01:43,930 >> Gaitā rādīt programma, fails ir izveidots. 35 00:01:43,930 --> 00:01:45,680 Un, ja jūsu programma ir pārtraucis darboties, 36 00:01:45,680 --> 00:01:48,689 ka fails joprojām pastāv jūsu sistēmā. 37 00:01:48,689 --> 00:01:50,230 Un mēs varam apskatīt to un izvērtēt to. 38 00:01:50,230 --> 00:01:53,670 Un tā, ka programma tiks iestatīts ir radījuši dažus pastāvīgus datus, 39 00:01:53,670 --> 00:01:57,390 dati ir pēc programmas ir beidzis darboties. 40 00:01:57,390 --> 00:02:02,320 >> Tagad visas šīs funkcijas, kas strādā ar radot failus un manipulējot 41 00:02:02,320 --> 00:02:04,940 viņiem dažādos veidos dzīvo standarta io.h, 42 00:02:04,940 --> 00:02:08,210 kas ir header fails, Jūs esat iespējams bijis mārciņa 43 00:02:08,210 --> 00:02:10,910 ieskaitot augšpusē diezgan daudz visas programmas 44 00:02:10,910 --> 00:02:14,130 jo tā satur vienu no visvairāk noderīgas funkcijas par mums, 45 00:02:14,130 --> 00:02:16,130 printf, kas arī ļauj dzīvo standarta io.h. 46 00:02:16,130 --> 00:02:20,400 Tātad jums nav nepieciešams, lai mārciņa iekļaut papildu failus iespējams 47 00:02:20,400 --> 00:02:23,540 Lai strādātu ar failu norādes. 48 00:02:23,540 --> 00:02:29,980 >> Tagad katru failu rādītājs funkcija, vai katru failu I / O, ieejas izejas 49 00:02:29,980 --> 00:02:33,310 funkcija, pieņem kā vienu tās parametriem vai ieejas 50 00:02:33,310 --> 00:02:35,822 fails pointer-- izņemot par vienu, fopen, kas 51 00:02:35,822 --> 00:02:38,280 ir tas, ko jūs izmantojat, lai saņemtu failu rādītāju pirmajā vietā. 52 00:02:38,280 --> 00:02:41,010 Bet pēc tam, kad esat atvērts failu un jūs saņemsiet failu norādes, 53 00:02:41,010 --> 00:02:43,510 tad jūs varat nodot tos kā argumenti par dažādām funkcijām 54 00:02:43,510 --> 00:02:46,720 mēs runāsim par šodien, kā arī daudzi citi 55 00:02:46,720 --> 00:02:48,520 lai jūs varētu strādāt ar failiem. 56 00:02:48,520 --> 00:02:50,980 >> Tātad ir seši diezgan kopēji pamata Ones 57 00:02:50,980 --> 00:02:52,870 ka mēs ejam runāt par šodien. 58 00:02:52,870 --> 00:02:57,160 fopen un tās biedrs funkcija fclose, fgetc 59 00:02:57,160 --> 00:03:02,670 un tās biedrs funkcija fputc, un fread un tās biedrs funkcija, 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 Tātad, pieņemsim iegūt tiesības uz to. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- ko tas dara? 63 00:03:07,050 --> 00:03:10,050 Nu, tas atver failu un tas dod jums faila rādītāju uz to, 64 00:03:10,050 --> 00:03:14,000 lai jūs varētu izmantot tad, ka failu rādītāju kā argumentu 65 00:03:14,000 --> 00:03:16,730 ar jebkuru no otras failu I / O funkciju. 66 00:03:16,730 --> 00:03:19,100 Vissvarīgākais atcerēties ar fopen 67 00:03:19,100 --> 00:03:24,222 ir tas, ka pēc tam, kad esat atvēris failu vai zvanīju kā viens šeit, 68 00:03:24,222 --> 00:03:26,930 jums nepieciešams pārbaudīt, lai pārliecinātos, ka rādītājs, ka jums atpakaļ 69 00:03:26,930 --> 00:03:28,320 nav vienāds ar null. 70 00:03:28,320 --> 00:03:31,320 Ja neesat noskatījos video norādes, tas, iespējams, nav jēgas. 71 00:03:31,320 --> 00:03:35,639 Bet, ja jūs mēģināt un dereference Null rādītājs atgādināt, 72 00:03:35,639 --> 00:03:38,180 Jūsu programma, iespējams, cietīs segmentācija [nedzirdama]. 73 00:03:38,180 --> 00:03:40,540 Mēs vēlamies, lai pārliecinātos, ka mēs ieguva likumīgu rādītāju atpakaļ. 74 00:03:40,540 --> 00:03:43,665 Lielākā daļa laika mēs gotten likumīgas rādītāju atpakaļ 75 00:03:43,665 --> 00:03:45,280 un tā nebūs problēma. 76 00:03:45,280 --> 00:03:46,760 >> Tātad, kā mēs Piezvaniet fopen? 77 00:03:46,760 --> 00:03:48,051 Tas izskatās diezgan daudz, piemēram, šis. 78 00:03:48,051 --> 00:03:52,690 File zvaigzne ptr-- PTR ir vispārējs nosaukt failu pointer-- fopen 79 00:03:52,690 --> 00:03:57,300 un mums iet ar divām lietām, faila nosaukumu un darbība mēs vēlamies uzņemties. 80 00:03:57,300 --> 00:04:01,690 Tātad mēs varētu būt zvanu, kas izskatās kā this-- failu star PTR 1 vienāds fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 Un operācija es esmu izvēlējies, ir r. 83 00:04:07,020 --> 00:04:08,639 >> Tātad, ko jūs domājat r ir šeit? 84 00:04:08,639 --> 00:04:11,180 Kādas ir lietas veidu mēs varētu darīt, lai failus? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 Tātad r ir darbība, ka mēs izvēlēties, kad mēs gribam, lai izlasītu failu. 87 00:04:17,500 --> 00:04:20,260 Tātad mēs būtu būtībā kad mēs veiktu zvanu, piemēram, tas 88 00:04:20,260 --> 00:04:25,440 iegūt sev faila rādītāju tāda, ka mēs pēc tam varētu nolasīt informāciju 89 00:04:25,440 --> 00:04:27,770 no file1.txt. 90 00:04:27,770 --> 00:04:34,190 >> Tāpat mēs varētu atvērt failu 2.txt rakstīšanai un lai mēs varētu pāriet ptr2, 91 00:04:34,190 --> 00:04:38,210 fails rādītājs Esmu izveidojis šeit, kā arguments, lai jebkuru funkciju, kas 92 00:04:38,210 --> 00:04:40,080 raksta informāciju failā. 93 00:04:40,080 --> 00:04:43,767 Un līdzīgi rakstiski, tur ir arī iespēja pievienot, a. 94 00:04:43,767 --> 00:04:45,600 Atšķirība starp rakstiski un pievienojot 95 00:04:45,600 --> 00:04:50,920 ir tas, ka tad, kad jūs rakstīt uz failu, ja jūs veicat zvanu fopen rakstīšanai 96 00:04:50,920 --> 00:04:54,761 un ka fails jau pastāv, tā ir gatavojas pārrakstīt visu failu. 97 00:04:54,761 --> 00:04:56,510 Tas notiek, lai sāktu pašā sākumā, 98 00:04:56,510 --> 00:04:58,820 izdzēšot visu informāciju tas jau tur. 99 00:04:58,820 --> 00:05:02,210 >> Tā kā, ja atverat to pievienojot, tā iet uz beigām failu 100 00:05:02,210 --> 00:05:04,340 ja tur ir jau teksts tā vai tajā esošā informācija, 101 00:05:04,340 --> 00:05:06,040 un tas būs pēc tam sākt rakstiski no turienes. 102 00:05:06,040 --> 00:05:08,570 Tātad jums nav zaudēt kādu no informācija, ko jūs esat darījuši līdz šim. 103 00:05:08,570 --> 00:05:12,110 Vai vēlaties, lai rakstītu vai pievienot veida ir atkarīgs no situācijas. 104 00:05:12,110 --> 00:05:16,840 Bet jūs droši vien zināt, ko Tiesības operācija ir tad, kad pienāks laiks. 105 00:05:16,840 --> 00:05:18,020 Tātad tas ir fopen. 106 00:05:18,020 --> 00:05:18,930 >> Kas par fclose? 107 00:05:18,930 --> 00:05:21,600 Nu, diezgan vienkārši, fclose vienkārši akceptē faila rādītāju. 108 00:05:21,600 --> 00:05:24,000 Un, kā jūs varētu gaidīt, tas aizveras šo failu. 109 00:05:24,000 --> 00:05:29,270 Un, kad mēs esam slēgti failu, mēs nevaram veikt kādu lielāku failu I / O funkcijas, 110 00:05:29,270 --> 00:05:31,420 lasot vai rakstot, uz šo failu. 111 00:05:31,420 --> 00:05:36,444 Mums ir jauna atvērt failu citā laikā, lai 112 00:05:36,444 --> 00:05:38,610 turpināt darbu ar tā, izmantojot I / O funkcijas. 113 00:05:38,610 --> 00:05:41,520 Tātad fclose nozīmē, ka mēs esam darījuši Strādājot ar šo failu. 114 00:05:41,520 --> 00:05:44,690 Un viss, kas mums ir nepieciešams, lai caurlaide ir nosaukums, faila rādītāju. 115 00:05:44,690 --> 00:05:50,010 Tātad uz pāris slīd atpakaļ, mēs fopened fails 1 dot teksta lasīšanai 116 00:05:50,010 --> 00:05:52,854 un mēs piešķirts ka faila rādītāju ptr1. 117 00:05:52,854 --> 00:05:55,020 Tagad mēs esam nolēmuši, mēs esam darīts lasījums no šī faila. 118 00:05:55,020 --> 00:05:56,561 Mums nav nepieciešams darīt vairāk ar to. 119 00:05:56,561 --> 00:05:58,890 Mēs varam tikai fclose ptr1. 120 00:05:58,890 --> 00:06:01,950 Un līdzīgi, varētu mums fclose citiem uzņēmumiem. 121 00:06:01,950 --> 00:06:02,450 Viss kārtībā. 122 00:06:02,450 --> 00:06:03,700 Tātad, kas ir atvēršanas un aizvēršanas. 123 00:06:03,700 --> 00:06:05,780 Tie ir divi galvenie sākot darbību. 124 00:06:05,780 --> 00:06:08,050 >> Tagad mēs vēlamies, lai reāli darīt kādu interesantu, 125 00:06:08,050 --> 00:06:11,940 un pirmais uzdevums, ka mēs redzēt, ka būs jādara tas fgetc-- 126 00:06:11,940 --> 00:06:14,110 fails iegūt raksturs. 127 00:06:14,110 --> 00:06:17,350 Tas, ko fgetc vispār nozīmētu. 128 00:06:17,350 --> 00:06:20,190 Tās mērķis dzīvē ir lasīt nākamo rakstzīmi, 129 00:06:20,190 --> 00:06:22,079 vai, ja tas ir jūsu ļoti Pirmais zvans uz fgetc 130 00:06:22,079 --> 00:06:23,870 par konkrētu failu, pirmais raksturs. 131 00:06:23,870 --> 00:06:26,210 Bet tad pēc tam, Jums nākamo, 132 00:06:26,210 --> 00:06:31,500 jau nākamajā raksturu šo failu, un to noglabā rakstzīmju mainīgā. 133 00:06:31,500 --> 00:06:34,490 Kā mēs esam darījuši šeit, char ch vienāds fgetc, 134 00:06:34,490 --> 00:06:36,389 pāriet uz faila nosaukumu rādītājs. 135 00:06:36,389 --> 00:06:38,180 Atkal, tas ir ļoti svarīgi šeit atcerēties 136 00:06:38,180 --> 00:06:41,430 ka, lai tām būtu Šī operācija izdosies, 137 00:06:41,430 --> 00:06:45,690 fails rādītājs pati must've atvērts lasīšanai. 138 00:06:45,690 --> 00:06:50,589 Mēs nevaram nolasīt rakstzīmi no faila rādītājs, ka mēs atvērām rakstīšanai. 139 00:06:50,589 --> 00:06:52,630 Tātad tas ir viens no ierobežojumi fopen, vai ne? 140 00:06:52,630 --> 00:06:55,470 Mums ir ierobežot sevi tikai veicot 141 00:06:55,470 --> 00:06:57,710 viena operācija ar vienu faila rādītāju. 142 00:06:57,710 --> 00:07:00,220 Ja mēs vēlējāmies, lai lasītu un rakstīt no tā paša faila 143 00:07:00,220 --> 00:07:03,840 mēs būtu atvērti divi atsevišķi failu norādes uz to pašu file-- 144 00:07:03,840 --> 00:07:05,670 viens par lasīšanu, viens rakstīšanai. 145 00:07:05,670 --> 00:07:08,400 >> Tātad vēlreiz, vienīgais iemesls Nesu, ka līdz šim ir 146 00:07:08,400 --> 00:07:11,920 jo, ja mēs ejam, lai veiktu zvanu lai fgetc, ka fails rādītājs must've 147 00:07:11,920 --> 00:07:14,172 atvērts lasīšanai. 148 00:07:14,172 --> 00:07:15,880 Un tad diezgan vienkārši, viss, kas mums jādara, 149 00:07:15,880 --> 00:07:17,546 ir caurlaide nosaukumu faila rādītāju. 150 00:07:17,546 --> 00:07:21,060 Tātad char ch vienāds fgetc ptr1. 151 00:07:21,060 --> 00:07:23,200 >> Tas notiek, lai saņemtu mums nākamais character-- 152 00:07:23,200 --> 00:07:25,575 vai atkal, ja tas ir pirmais reize, kad mēs esam padarījuši šo aicinājumu, 153 00:07:25,575 --> 00:07:29,750 pirmais character-- no kāda fails tiek norādīts ar ptr1. 154 00:07:29,750 --> 00:07:32,210 Atgādināt, ka tas bija fails 1 dot teksts. 155 00:07:32,210 --> 00:07:36,490 Tas būs iegūt pirmo raksturu, kas un mēs uzglabāt to mainīgo ch. 156 00:07:36,490 --> 00:07:37,941 Diezgan vienkārši. 157 00:07:37,941 --> 00:07:40,190 Tātad, mēs esam tikai paskatījās trīs funkcijas un jau mēs 158 00:07:40,190 --> 00:07:43,070 var darīt kaut ko diezgan veikls. 159 00:07:43,070 --> 00:07:46,320 >> Tātad, ja mēs šo spēju iegūt raksturs 160 00:07:46,320 --> 00:07:48,943 un mēs cilpa it-- lai mēs turpina saņemt rakstzīmes 161 00:07:48,943 --> 00:07:51,390 no faila vairāk un vairāk un over-- tagad mēs 162 00:07:51,390 --> 00:07:54,500 var lasīt katru raksturs failā. 163 00:07:54,500 --> 00:07:58,670 Un, ja mēs drukāt katru raksturu tūlīt pēc tam, kad mēs lasām to, 164 00:07:58,670 --> 00:08:01,960 tagad mēs esam lasīt no faila un drukāts tās saturu uz ekrāna. 165 00:08:01,960 --> 00:08:05,610 Mēs esam efektīvi saliktās ka fails uz ekrāna. 166 00:08:05,610 --> 00:08:09,670 Un tas ir tas, ko Linux komandu kaķis dara. 167 00:08:09,670 --> 00:08:13,250 >> Ja jūs veida kaķi faila nosaukumu, to izdrukās visu saturu 168 00:08:13,250 --> 00:08:15,160 no failu jūsu termināla logā. 169 00:08:15,160 --> 00:08:19,010 Un tā tas maz cilpa šeit, tikai trīs rindas kods, 170 00:08:19,010 --> 00:08:23,270 bet tas faktiski dublē Linux komandu kaķis. 171 00:08:23,270 --> 00:08:25,210 Tātad šis sintakse varētu izskatās mazliet dīvaini, 172 00:08:25,210 --> 00:08:26,670 bet šeit ir to, kas notiek šeit. 173 00:08:26,670 --> 00:08:31,460 Kaut ch vienāds fgetc, PTR nav vienāds ar EOF-- tas viss kumoss, 174 00:08:31,460 --> 00:08:34,669 bet pieņemsim sadalīs to vienkārši tāpēc tas ir skaidrs, uz sintaksi. 175 00:08:34,669 --> 00:08:37,169 Esmu konsolidēti to labad telpu, 176 00:08:37,169 --> 00:08:39,049 lai gan tas ir nedaudz sintaktiski grūts. 177 00:08:39,049 --> 00:08:41,194 >> Tātad šī daļa zaļā tiesībām Tagad, kas ir tā dara? 178 00:08:41,194 --> 00:08:42,860 Nu, tas ir tikai mūsu fgetc zvanu, vai ne? 179 00:08:42,860 --> 00:08:44,530 Mēs esam redzējuši, ka pirms. 180 00:08:44,530 --> 00:08:49,500 Tas ir iegūt vienu raksturs no lietas materiāliem. 181 00:08:49,500 --> 00:08:53,220 Tad mēs salīdzinām, ka raksturs pret EOF. 182 00:08:53,220 --> 00:08:57,470 EOF ir īpaša vērtība, kas ir noteikts standarta io.h, kas 183 00:08:57,470 --> 00:08:59,390 ir beigas failu raksturs. 184 00:08:59,390 --> 00:09:03,450 Tātad būtībā, kas notiek varētu notikt ir šī cilpa lasīs raksturs, 185 00:09:03,450 --> 00:09:07,445 salīdzināt to ar EOF, tad faila beigas raksturs. 186 00:09:07,445 --> 00:09:10,070 Ja tie nesakrīt, tāpēc mums nav sasnieguši faila, 187 00:09:10,070 --> 00:09:11,490 mēs izdrukāt ka raksturu out. 188 00:09:11,490 --> 00:09:13,740 Tad mēs iesim atpakaļ uz sākot no cilpas vēlreiz. 189 00:09:13,740 --> 00:09:18,310 Mēs saņemsiet raksturs, pārbaudiet pret EOF, izdrukāt to ārā, un tā tālāk 190 00:09:18,310 --> 00:09:21,094 un tā tālāk, un tā tālāk, looping caur tādā veidā 191 00:09:21,094 --> 00:09:22,760 kamēr mēs esam sasnieguši faila. 192 00:09:22,760 --> 00:09:24,593 Un tad ar šo punktu, mēs esam iespiesti 193 00:09:24,593 --> 00:09:26,210 ārā visu saturu faila. 194 00:09:26,210 --> 00:09:29,450 Tātad vēlreiz, mēs esam tikai redzējis fopen, fclose, un fgetc 195 00:09:29,450 --> 00:09:34,950 un jau mēs varam dublēt Linux termināls komandu. 196 00:09:34,950 --> 00:09:38,850 >> Kā jau teicu sākumā, mums bija fgetc un fputc, 197 00:09:38,850 --> 00:09:41,860 un fputc bija biedrs funkcija fgetc. 198 00:09:41,860 --> 00:09:44,880 Un tā, kā jūs varētu iedomāties, tas ir rakstiski ekvivalents. 199 00:09:44,880 --> 00:09:49,440 Tas ļauj mums rakstīt vienu rakstzīmi uz failu. 200 00:09:49,440 --> 00:09:53,290 >> Atkal, brīdinājumu ir, tikai tāpat kā tas bija ar fgetc, fails 201 00:09:53,290 --> 00:09:56,660 ka mēs esam rakstiski must've bijis atvērts rakstīšanai vai pievienojot. 202 00:09:56,660 --> 00:10:00,820 Ja mēs mēģinātu izmantot fputc uz failu ka mēs esam atvērti lasīšanai, 203 00:10:00,820 --> 00:10:02,760 mēs ejam ciest mazliet kļūda. 204 00:10:02,760 --> 00:10:04,440 Bet zvans ir diezgan vienkāršs. 205 00:10:04,440 --> 00:10:08,000 fputc kapitāls ptr2, visi kas gatavojas darīt, ir tā 206 00:10:08,000 --> 00:10:12,040 gatavojas rakstīt vēstuli, stājas spēkā failā 2 dot 207 00:10:12,040 --> 00:10:14,760 teksts, kurā bija vārds no failu, ka mēs atvērām un piešķir 208 00:10:14,760 --> 00:10:17,280 rādītāja ptr2. 209 00:10:17,280 --> 00:10:20,430 Tāpēc mēs esam gatavojas rakstīt kapitāls A līdz failu 2 dot tekstu. 210 00:10:20,430 --> 00:10:24,592 Un mēs uzrakstīt izsaukuma norāda uz failu 3 dot 211 00:10:24,592 --> 00:10:27,330 teksts, kas tika norādīts uz ko ptr3. 212 00:10:27,330 --> 00:10:29,730 Tātad vēlreiz, diezgan vienkāršs šeit. 213 00:10:29,730 --> 00:10:32,727 >> Bet tagad mēs varam darīt citas lietas. 214 00:10:32,727 --> 00:10:34,560 Mums ir šo piemēru mēs vienkārši iet pa 215 00:10:34,560 --> 00:10:38,950 par to var atkārtot kaķi Linux komandu, vienu, kas izdrukā 216 00:10:38,950 --> 00:10:40,500 uz ekrāna. 217 00:10:40,500 --> 00:10:43,510 Nu, tagad, kad mums ir iespēja lasīt rakstzīmes no failiem 218 00:10:43,510 --> 00:10:46,590 un rakstīt rakstzīmes failiem, kāpēc nav mēs vienkārši aizstāt, ka 219 00:10:46,590 --> 00:10:50,720 zvanīt uz printf ar aicinājumu fputc. 220 00:10:50,720 --> 00:10:54,090 >> Un tagad mēs esam dublēta KP, ļoti vienkāršas Linux komandu 221 00:10:54,090 --> 00:10:59,100 ka mēs runājām par ceļu garš Pirms Linux komandas video. 222 00:10:59,100 --> 00:11:01,070 Mēs esam efektīvi pavairot, ka tieši šeit. 223 00:11:01,070 --> 00:11:04,790 Mēs lasāt raksturs, un tad mēs esam rakstot šo raksturu uz citu failu. 224 00:11:04,790 --> 00:11:07,660 Lasījums no viena faila, rakstot uz otru, vairāk un vairāk 225 00:11:07,660 --> 00:11:11,350 un atkal, kamēr mēs hit EOF. 226 00:11:11,350 --> 00:11:14,250 Mēs esam ieguvuši, lai beigām failu mēs cenšamies kopēt no. 227 00:11:14,250 --> 00:11:18,500 Un līdz ar to mēs esam uzrakstījuši visi rakstzīmes mums lietai 228 00:11:18,500 --> 00:11:19,500 ka mēs esam rakstiski. 229 00:11:19,500 --> 00:11:24,270 Tātad šis ir cp, Linux kopija komandu. 230 00:11:24,270 --> 00:11:26,550 >> Pašā sākumā Šis video, man bija brīdinājumu 231 00:11:26,550 --> 00:11:29,840 ka mēs varētu runāt Mazliet par norādes. 232 00:11:29,840 --> 00:11:32,480 Te ir īpaši, ja mēs esam gatavojas runāt par norādes 233 00:11:32,480 --> 00:11:34,800 papildus iesniegt norādes. 234 00:11:34,800 --> 00:11:37,870 Tātad šī funkcija izskatās veida biedējošu. 235 00:11:37,870 --> 00:11:39,120 Tas ir ieguvuši vairākus parametrus. 236 00:11:39,120 --> 00:11:40,430 Tur ir daudz kas notiek šeit. 237 00:11:40,430 --> 00:11:42,760 Tur ir daudz dažādi krāsas un teksti. 238 00:11:42,760 --> 00:11:47,100 Bet tiešām, tas ir tikai vispārējs versija fgetc 239 00:11:47,100 --> 00:11:50,110 kas ļauj mums, lai saņemtu kādu informācijas apjomu. 240 00:11:50,110 --> 00:11:53,560 Tas var būt mazliet neefektīvs, ja mēs esam kļūst rakstzīmes pa vienam, 241 00:11:53,560 --> 00:11:55,770 atkārtojot caur failu viens raksturs laikā. 242 00:11:55,770 --> 00:12:00,230 Vai tas būtu jaukāk, lai saņemtu 100 laikā, vai 500 vienlaicīgi? 243 00:12:00,230 --> 00:12:03,250 >> Nu, fread un tās biedrs funkcija fwrite, kuru mēs runājam par 244 00:12:03,250 --> 00:12:05,490 Kā otru, ļauj mums darīt tieši to. 245 00:12:05,490 --> 00:12:08,480 Mēs varam lasīt patvaļīgu summu informāciju no faila 246 00:12:08,480 --> 00:12:10,290 un mēs uzglabāt to kaut kur īslaicīgi. 247 00:12:10,290 --> 00:12:12,980 Tā vietā, lai to var vienkārši fit to vienu mainīgo, 248 00:12:12,980 --> 00:12:15,790 mums var būt nepieciešams, lai saglabātu to masīvā. 249 00:12:15,790 --> 00:12:19,980 Un tā, mēs caurlaide četrās argumenti fread-- rādītāju 250 00:12:19,980 --> 00:12:23,940 uz vietu, kur mēs esi gatavojas, lai saglabātu informāciju, 251 00:12:23,940 --> 00:12:29,180 cik liela katra informācijas vienība būs, cik daudz vienību informācijas 252 00:12:29,180 --> 00:12:35,192 mēs vēlamies iegūt, un no kurš fails mēs gribam, lai saņemtu viņiem. 253 00:12:35,192 --> 00:12:37,150 Iespējams, vislabāk ilustrē ar piemēru šeit. 254 00:12:37,150 --> 00:12:41,640 Tātad pieņemsim, ka mēs paziņojam masīvs 10 veseli skaitļi. 255 00:12:41,640 --> 00:12:45,080 Mēs esam tikko paziņoja, par kaudze patvaļīgi int arr 10. 256 00:12:45,080 --> 00:12:46,970 Tā ka ir diezgan vienkārši. 257 00:12:46,970 --> 00:12:51,970 Tagad to, ko mēs darām, lai gan ir frecall ir mēs lasāt lielumu int 258 00:12:51,970 --> 00:12:54,180 reizes 10 baiti informācijas. 259 00:12:54,180 --> 00:12:59,040 Izmērs int būtnes four-- tas izmērs no vesela skaitļa in c. 260 00:12:59,040 --> 00:13:02,790 >> Tātad, ko mēs darām, ir mums lasāt 40 baiti vērts informācijas 261 00:13:02,790 --> 00:13:05,850 no lietas materiāliem norādīja uz ko PTR. 262 00:13:05,850 --> 00:13:08,600 Un mēs esam tie, uzglabājot 40 baiti kaut kur 263 00:13:08,600 --> 00:13:12,080 kur mēs esam atcelt 40 baiti vērts atmiņas. 264 00:13:12,080 --> 00:13:15,970 Par laimi, mēs esam jau darījuši līdz paziņojot arr, ka masīvs tiesības tur. 265 00:13:15,970 --> 00:13:19,770 Tas spēj saimniecības 10 četru baitu vienības. 266 00:13:19,770 --> 00:13:22,860 Tātad kopumā, tas var būt 40 baiti vērts informācijas. 267 00:13:22,860 --> 00:13:26,540 Un tagad mēs esam lasījums 40 baiti informāciju no lietas materiāliem, 268 00:13:26,540 --> 00:13:30,330 un mēs esam uzglabājot to ARR. 269 00:13:30,330 --> 00:13:35,470 >> Atsaukt no video uz norādes, ka nosaukumu masīva, piemēram, ARR, 270 00:13:35,470 --> 00:13:38,370 patiešām ir tikai rādītājs uz tās pirmais elements. 271 00:13:38,370 --> 00:13:43,680 Tātad, kad mēs pāriet ARR tur, mēs ir, faktiski, kas iet rādītājs. 272 00:13:43,680 --> 00:13:46,120 >> Tāpat mēs varam darīt this-- mēs ne vienmēr 273 00:13:46,120 --> 00:13:51,200 nepieciešams, lai saglabātu mūsu buferis uz skursteņa. 274 00:13:51,200 --> 00:13:54,990 Mēs varētu arī dinamiski piešķirt buferis, piemēram, tas, izmantojot malloc. 275 00:13:54,990 --> 00:13:57,340 Atcerieties, kad mēs dinamiski piešķirt atmiņu, 276 00:13:57,340 --> 00:14:00,550 mēs saglabājot to uz kaudze, nevis kaudze. 277 00:14:00,550 --> 00:14:02,110 Bet tas joprojām ir buferis. 278 00:14:02,110 --> 00:14:06,810 >> Tā vēl, šajā gadījumā, ir turot 640 baitu informācijas 279 00:14:06,810 --> 00:14:09,230 jo dubultā aizņem astoņas baiti. 280 00:14:09,230 --> 00:14:11,570 Un mēs esam lūdzot 80 no tiem. 281 00:14:11,570 --> 00:14:13,770 Mēs vēlamies, lai būtu telpa turēt 80 dubultspēlē. 282 00:14:13,770 --> 00:14:17,210 Tātad 80 reizes 8 ir 640 baiti informācija. 283 00:14:17,210 --> 00:14:21,880 Un tas aicinājums fread ir savācot 640 baitu informācijas 284 00:14:21,880 --> 00:14:27,770 No lietas materiāliem norādīja uz ko PTR un uzglabājot to tagad arr2. 285 00:14:27,770 --> 00:14:32,770 >> Tagad mēs varam arī ārstēt fread tāpat kā aicinājumu uz fgetc. 286 00:14:32,770 --> 00:14:37,140 Šajā gadījumā, mēs esam tikai cenšas saņemt vienu rakstzīmi no lietas materiāliem. 287 00:14:37,140 --> 00:14:40,070 Un mums nav vajadzīga masīvs rīkot raksturs. 288 00:14:40,070 --> 00:14:43,170 Mēs varam tikai uzglabāt to raksturs mainīgs. 289 00:14:43,170 --> 00:14:46,390 >> Nozvejas, lai gan, ir tas, ka kad mums vienkārši ir mainīgs, 290 00:14:46,390 --> 00:14:50,290 mums ir nepieciešams braukt, tādā adrese šī mainīgā 291 00:14:50,290 --> 00:14:52,550 jo atgādināt, ka Pirmais arguments fread 292 00:14:52,550 --> 00:14:59,210 ir pointers uz atrašanās vietu un atmiņas kur mēs vēlamies saglabāt šo informāciju. 293 00:14:59,210 --> 00:15:01,550 Atkal, nosaukumu, masīvs ir rādītājs. 294 00:15:01,550 --> 00:15:04,200 Tātad mums nav jādara aizvieto & zīmes masīvs. 295 00:15:04,200 --> 00:15:07,270 Bet c, raksturs c šeit, nav masīvs. 296 00:15:07,270 --> 00:15:08,390 Tas ir tikai mainīga. 297 00:15:08,390 --> 00:15:11,840 Un tāpēc mums ir nepieciešams nokārtot Ampersand c norādīt 298 00:15:11,840 --> 00:15:15,350 ka tas ir adrese, kur mēs gribam saglabāt šo vienu baitu informācijas, 299 00:15:15,350 --> 00:15:20,479 tas viens raksturu, kas mēs apkopojam no PTR. 300 00:15:20,479 --> 00:15:22,270 Fwrite-- Es iešu cauri Tas mazliet vairāk 301 00:15:22,270 --> 00:15:25,440 quickly-- ir diezgan daudz precīzs ekvivalents fread 302 00:15:25,440 --> 00:15:27,720 izņemot tā rakstīšanai nevis lasījumā, tikai 303 00:15:27,720 --> 00:15:31,610 tāpat kā other-- mēs esam bija atvērti un aizvērt, iegūt raksturs, 304 00:15:31,610 --> 00:15:32,530 rakstīt raksturs. 305 00:15:32,530 --> 00:15:35,040 Tagad tas ir iegūt patvaļīgs informācijas apjoms, 306 00:15:35,040 --> 00:15:37,170 tiesības patvaļīgi informācijas apjomu. 307 00:15:37,170 --> 00:15:39,790 Tātad, tāpat kā līdz šim, mēs varam ir masīvs 10 veseli skaitļi 308 00:15:39,790 --> 00:15:43,210 kur mums jau ir uzglabāto informāciju, varbūt. 309 00:15:43,210 --> 00:15:46,580 >> Tas bija iespējams, dažas rindiņas kodu ka vajadzētu iet starp šiem diviem 310 00:15:46,580 --> 00:15:49,990 kur es aizpildīt arr ar kaut kas nozīmīgs. 311 00:15:49,990 --> 00:15:51,880 Es piepilda to ar 10 dažādiem veseliem skaitļiem. 312 00:15:51,880 --> 00:15:54,920 Un tā vietā, ko es esmu darot raksta no ARR 313 00:15:54,920 --> 00:15:58,600 un vācot informāciju no ARR. 314 00:15:58,600 --> 00:16:02,390 Un es esmu ņemot šo informāciju un liekot to failā. 315 00:16:02,390 --> 00:16:05,410 >> Tā vietā, tas ir, no failu uz bufera, 316 00:16:05,410 --> 00:16:08,790 Mēs tagad iet no bufera uz failu. 317 00:16:08,790 --> 00:16:10,580 Tātad, tas ir tikai otrādi. 318 00:16:10,580 --> 00:16:16,680 Tātad atkal, tāpat kā iepriekš, mēs varam ir arī kaudze rieciens atmiņas 319 00:16:16,680 --> 00:16:19,600 ka mēs esam dinamiski piešķirti un lasīt no 320 00:16:19,600 --> 00:16:21,570 un rakstīt, ka uz failu. 321 00:16:21,570 --> 00:16:24,900 >> Un mums ir arī viens mainīgais spēj noturēt vienu baitu 322 00:16:24,900 --> 00:16:27,200 informācijas, piemēram, raksturs. 323 00:16:27,200 --> 00:16:29,830 Bet atkal, mums ir caurlaide adrese šī mainīgā 324 00:16:29,830 --> 00:16:31,840 ja mēs gribam, lai lasītu no tā. 325 00:16:31,840 --> 00:16:35,280 Tātad, mēs varam rakstīt informāciju mēs atrast šajā adresē 326 00:16:35,280 --> 00:16:39,050 uz failu rādītājs, PTR. 327 00:16:39,050 --> 00:16:41,630 >> Tur ir daudz citu liels failu I / O funkcijas 328 00:16:41,630 --> 00:16:44,650 ka darīt dažādas lietas, turklāt tie, mēs esam runājuši par šodienu. 329 00:16:44,650 --> 00:16:46,450 Pāris no tiem jūs varētu atrast noderīgu 330 00:16:46,450 --> 00:16:50,840 ir fgets un fputs, kas ir ekvivalents 331 00:16:50,840 --> 00:16:56,190 no fgetc un fputc bet lasīšanai viens string no faila. 332 00:16:56,190 --> 00:16:59,020 Tā vietā, lai vienu raksturs, tas būs lasīt visu virkni. 333 00:16:59,020 --> 00:17:02,940 fprintf, kas būtībā ļauj jums izmantot printf rakstīt failā. 334 00:17:02,940 --> 00:17:05,619 Tātad tāpat kā jūs varat darīt mainīgo aizvietošana, izmantojot 335 00:17:05,619 --> 00:17:09,900 vietturi procenti i un procenti d, un tā tālāk, ar printf 336 00:17:09,900 --> 00:17:14,690 Jūs varat līdzīgi ņemiet līdzi printf stīgu un drukāt kaut 337 00:17:14,690 --> 00:17:16,800 piemēram, ka uz failu. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- ja jums ir DVD atskaņotājs ir analoģija es parasti lietoju here-- 339 00:17:20,720 --> 00:17:23,109 ir veida, piemēram, izmantojot savu attīt atpakaļ un ātri uz priekšu 340 00:17:23,109 --> 00:17:25,819 pogas, lai pārvietotos pa filmu. 341 00:17:25,819 --> 00:17:28,369 Līdzīgi, jūs varat pārvietoties pa failu. 342 00:17:28,369 --> 00:17:30,250 Viena no lietām, iekšpusē ka faila struktūra 343 00:17:30,250 --> 00:17:34,270 ka c rada jums ir indikators no tā, kur jūs esat failā. 344 00:17:34,270 --> 00:17:36,420 Vai jūs pie ļoti sākas pēc baits nulles? 345 00:17:36,420 --> 00:17:39,290 Vai jūs pie baitu 100, baitu 1000, un tā tālāk? 346 00:17:39,290 --> 00:17:44,340 Jūs varat izmantot fseek patvaļīgi pārvietot ka indikators uz priekšu vai atpakaļ. 347 00:17:44,340 --> 00:17:46,744 >> Un ftell, atkal līdzīgi DVD atskaņotāju, 348 00:17:46,744 --> 00:17:49,660 ir kā mazs pulksteni, kas stāsta Jums, cik minūtes un sekundes jums 349 00:17:49,660 --> 00:17:52,480 Ir uz īpašu filmu. 350 00:17:52,480 --> 00:17:56,990 Tāpat ftell stāsta, kā daudzi baiti esat failā. 351 00:17:56,990 --> 00:18:00,210 feof ir atšķirīga versija konstatēt, vai jūs esat 352 00:18:00,210 --> 00:18:01,700 sasnieguši failu. 353 00:18:01,700 --> 00:18:03,600 Un ferror ir funkcija ka jūs varat izmantot 354 00:18:03,600 --> 00:18:06,959 lai noteiktu, vai kaut kas ir nogājis greizi Darbs ar failu. 355 00:18:06,959 --> 00:18:08,750 Atkal, tas ir tikai nesaskrāpē virsmu. 356 00:18:08,750 --> 00:18:12,730 Tur ir vēl daudz vairāk failu I / O funkcijas standarta io.h. 357 00:18:12,730 --> 00:18:16,620 Bet tas būs iespējams iegūt jums sāka strādāt ar failu norādes. 358 00:18:16,620 --> 00:18:17,640 Es esmu Doug Lloyd. 359 00:18:17,640 --> 00:18:19,750 Tas ir CS50. 360 00:18:19,750 --> 00:18:21,669