1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> SPEAKER: Deri më tani, është e mundshme se shumica e programeve tuaja 3 00:00:07,870 --> 00:00:10,170 kanë qenë pak kalimtare. 4 00:00:10,170 --> 00:00:13,310 Ju drejtuar një program si Mario ose babëzitur. 5 00:00:13,310 --> 00:00:17,350 Ajo bën diçka, ajo ndoshta bën përdoruesi për disa informata, 6 00:00:17,350 --> 00:00:20,400 shtypura disa dalje në ekran, por pastaj kur programi juaj është e gjatë, 7 00:00:20,400 --> 00:00:23,252 nuk ka të vërtetë nuk ka prova atje ajo ishte e drejtuar ndonjëherë në vendin e parë. 8 00:00:23,252 --> 00:00:25,960 Unë do të thotë, i sigurt, ju mund të keni lënë ajo të hapet në dritare terminali, 9 00:00:25,960 --> 00:00:29,770 por në qoftë se ju të qartë ekranin tuaj, nuk ka me të vërtetë nuk ka prova se ka ekzistuar. 10 00:00:29,770 --> 00:00:33,720 Ne nuk kemi një mjet për ruajtjen informacion këmbëngulës, informacioni 11 00:00:33,720 --> 00:00:36,890 që ekziston pas tonë Programi ka ndaluar drejtimin, 12 00:00:36,890 --> 00:00:39,241 ose ne nuk kemi deri në këtë pikë. 13 00:00:39,241 --> 00:00:41,490 Për fat të mirë edhe pse, c bën na japin me aftësinë 14 00:00:41,490 --> 00:00:44,220 për të bërë këtë nëpërmjet zbatimit diçka që quhet 15 00:00:44,220 --> 00:00:48,330 një skedar, një strukturë që në thelb paraqet një skedar që ju do të dyfishtë 16 00:00:48,330 --> 00:00:53,826 klikoni në kompjuterin tuaj, nëse ju jeni përdoret për një përdorues mjedis grafik. 17 00:00:53,826 --> 00:00:55,700 Në përgjithësi kur punojnë me c, Ne jemi të vërtetë 18 00:00:55,700 --> 00:00:59,965 do të jetë duke punuar me pointers për files-- fotografi stars-- 19 00:00:59,965 --> 00:01:02,090 me përjashtim të pak kur flasim për një çift 20 00:01:02,090 --> 00:01:04,560 nga funksionet që punojnë me fotografi pointers. 21 00:01:04,560 --> 00:01:08,990 Ju nuk keni nevojë për të kanë hapur me të vërtetë shumë thellë në të kuptuarit pointers 22 00:01:08,990 --> 00:01:09,730 vetë. 23 00:01:09,730 --> 00:01:12,870 Ka pak vockël ku ne do të flasim rreth tyre, 24 00:01:12,870 --> 00:01:18,090 por në përgjithësi fotografi pointers dhe pointers, ndërsa të ndërlidhura, 25 00:01:18,090 --> 00:01:20,290 nuk janë saktësisht e njëjta gjë. 26 00:01:20,290 --> 00:01:22,440 >> Tani çfarë dua të them kur Unë them të dhënat e vazhdueshme? 27 00:01:22,440 --> 00:01:23,650 Çfarë është të dhënat e vazhdueshme? 28 00:01:23,650 --> 00:01:25,232 Pse nuk kemi kujdes për këtë? 29 00:01:25,232 --> 00:01:27,190 Thuaj, për shembull, se ju jeni drejtimin e një programi 30 00:01:27,190 --> 00:01:29,850 apo ju keni rishkruar një program që është një lojë, 31 00:01:29,850 --> 00:01:32,960 dhe ju doni të mbani gjurmët të gjitha lëvizjet e përdoruesit 32 00:01:32,960 --> 00:01:36,620 kështu që ndoshta nëse diçka shkon keq, ju mund të shqyrtojë dosjen pas ndeshjes. 33 00:01:36,620 --> 00:01:39,970 Kjo është ajo që ne do të thotë kur ne flasin për të dhëna të vazhdueshme. 34 00:01:39,970 --> 00:01:43,930 >> Në rrjedhën e drejtimin tuaj program, një skedar është krijuar. 35 00:01:43,930 --> 00:01:45,680 Dhe kur programi juaj ka ndaluar drejtimin, 36 00:01:45,680 --> 00:01:48,689 se dosja ende ekziston në sistemin tuaj. 37 00:01:48,689 --> 00:01:50,230 Dhe ne mund të shikoni në atë dhe të shqyrtojë atë. 38 00:01:50,230 --> 00:01:53,670 Dhe kështu që programi do të jetë i vendosur për të kanë krijuar disa të dhëna të vazhdueshme, 39 00:01:53,670 --> 00:01:57,390 të dhëna ekzistojnë pas programit ka përfunduar running. 40 00:01:57,390 --> 00:02:02,320 >> Tani të gjitha këto funksione që punojnë me krijuar fotografi dhe manipulimin 41 00:02:02,320 --> 00:02:04,940 ata në mënyra të ndryshme jetojnë në io.h standarde, 42 00:02:04,940 --> 00:02:08,210 i cili është një kokë skedar që ju keni qenë shumë gjasa paund 43 00:02:08,210 --> 00:02:10,910 përfshirë në krye të mjaft shumë të gjitha programet tuaja 44 00:02:10,910 --> 00:02:14,130 sepse ajo përmban një nga Funksionet më të dobishme për ne, 45 00:02:14,130 --> 00:02:16,130 printf, që gjithashtu ju lejon jeton në io.h. standarde 46 00:02:16,130 --> 00:02:20,400 Pra, ju nuk keni nevojë të paund përfshirë ndonjë fotografi të tjera ndoshta 47 00:02:20,400 --> 00:02:23,540 në mënyrë që të punojnë me fotografi pointers. 48 00:02:23,540 --> 00:02:29,980 >> Tani çdo funksion i vetëm skedar akrep, ose çdo skedar të vetëm I / O, output input 49 00:02:29,980 --> 00:02:33,310 funksion, e pranon si një i parametrave të tij apo të inputeve 50 00:02:33,310 --> 00:02:35,822 një pointer-- skedar përveç për një, fopen, e cila 51 00:02:35,822 --> 00:02:38,280 është ajo që ju përdorni për të marrë dosjen akrep në vendin e parë. 52 00:02:38,280 --> 00:02:41,010 Por, pasi ju keni hapi paraqesë dhe të merrni fotografi pointers, 53 00:02:41,010 --> 00:02:43,510 atëherë ju mund të kalojë ato si Argumentet në funksione të ndryshme 54 00:02:43,510 --> 00:02:46,720 ne do të flasim për sot, si edhe shumë të tjerë 55 00:02:46,720 --> 00:02:48,520 kështu që ju mund të punoni me fotografi. 56 00:02:48,520 --> 00:02:50,980 >> Pra, ka gjashtë goxha ato themelore të përbashkëta 57 00:02:50,980 --> 00:02:52,870 që ne do të flasim për sot. 58 00:02:52,870 --> 00:02:57,160 fopen dhe shoqëruesi i saj Funksioni fclose, fgetc 59 00:02:57,160 --> 00:03:02,670 dhe fputc saj funksion shoqërues, dhe fread dhe funksioni i saj shoqërues, 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 Pra, le të marrë të drejtë në të. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- çfarë do të bëni? 63 00:03:07,050 --> 00:03:10,050 E pra, ajo hap një dosje dhe ajo ju jep një tregues file për të, 64 00:03:10,050 --> 00:03:14,000 kështu që ju mund të përdorni që atëherë paraqesë treguesin si argument 65 00:03:14,000 --> 00:03:16,730 me ndonjë file tjetër I / O funksionet. 66 00:03:16,730 --> 00:03:19,100 Gjëja më e rëndësishme për të kujtuar me fopen 67 00:03:19,100 --> 00:03:24,222 është që pasi të keni hapur paraqesë ose ka bërë një telefonatë si ajo këtu, 68 00:03:24,222 --> 00:03:26,930 ju duhet të kontrolloni për të siguruar se tregues që ju mori përsëri 69 00:03:26,930 --> 00:03:28,320 nuk është e barabartë me null. 70 00:03:28,320 --> 00:03:31,320 Nëse ju nuk e keni shikuar videon në pointers, kjo nuk mund të ketë kuptim. 71 00:03:31,320 --> 00:03:35,639 Por në qoftë se ju provoni dhe dereference një risjell null akrep, 72 00:03:35,639 --> 00:03:38,180 programi juaj ndoshta do të vuajnë një segmentimit [e padëgjueshme]. 73 00:03:38,180 --> 00:03:40,540 Ne duam të sigurohemi që ne mori një akrep prapa legjitim. 74 00:03:40,540 --> 00:03:43,665 Pjesa më e madhe e kohës ne do të kanë marrë një akrep legjitim prapa 75 00:03:43,665 --> 00:03:45,280 dhe kjo nuk do të jetë një problem. 76 00:03:45,280 --> 00:03:46,760 >> Pra, si nuk kemi bërë një thirrje për të fopen? 77 00:03:46,760 --> 00:03:48,051 Ajo duket shumë e shumë si kjo. 78 00:03:48,051 --> 00:03:52,690 Skeda yll ptr-- PTR qenë një gjenerik emër për dosjen pointer-- fopen 79 00:03:52,690 --> 00:03:57,300 dhe ne të kalojë në dy gjëra, një emër file dhe një operacion ne duam të ndërmarrë. 80 00:03:57,300 --> 00:04:01,690 Pra, ne mund të kemi një telefonatë që duket si this-- PTR skedar yll 1 barabartë fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 Dhe operacioni unë kam zgjedhur është r. 83 00:04:07,020 --> 00:04:08,639 >> Pra, çfarë mendoni se r është këtu? 84 00:04:08,639 --> 00:04:11,180 Cilat janë llojet e gjërave ne mund të jetë në gjendje të bëjë në fotografi? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 Pra, r është operacioni që ne zgjidhni kur ne duam të lexuar një file. 87 00:04:17,500 --> 00:04:20,260 Pra, ne do të në thelb kur ne kemi bërë një thirrje si kjo 88 00:04:20,260 --> 00:04:25,440 të bëhet veten një akrep skedarëve të tilla që ne pastaj mund të lexoni informacion 89 00:04:25,440 --> 00:04:27,770 nga file1.txt. 90 00:04:27,770 --> 00:04:34,190 >> Në mënyrë të ngjashme, ne mund të hapur fotografi 2.txt për të shkruar dhe kështu që ne mund të kalojë ptr2, 91 00:04:34,190 --> 00:04:38,210 skedari tregues që kam krijuar këtu, si një argument për çdo funksion që 92 00:04:38,210 --> 00:04:40,080 shkruan informatat në një skedar. 93 00:04:40,080 --> 00:04:43,767 Dhe të ngjashme me shkrim, ka gjithashtu mundësi për të append, një. 94 00:04:43,767 --> 00:04:45,600 Dallimi në mes shkrim dhe bashkëngjitur 95 00:04:45,600 --> 00:04:50,920 duke qenë se kur ju shkruani në një skedar, në qoftë se ju bëni një telefonatë për të fopen për të shkruar 96 00:04:50,920 --> 00:04:54,761 dhe se dosja tashmë ekziston, është e do të prishësh të gjithë dosjen. 97 00:04:54,761 --> 00:04:56,510 Ajo do të fillojë në fillim, 98 00:04:56,510 --> 00:04:58,820 fshirjes gjitha informatat kjo është tashmë atje. 99 00:04:58,820 --> 00:05:02,210 >> Ndërsa në qoftë se ju të hapur atë për bashkëngjitur, ajo do të shkojë deri në fund të skedarit 100 00:05:02,210 --> 00:05:04,340 në qoftë se ka tashmë në tekst ajo ose informacion në të, 101 00:05:04,340 --> 00:05:06,040 dhe kjo pastaj do të fillojë shkruar nga atje. 102 00:05:06,040 --> 00:05:08,570 Pra, ju nuk do të humbni ndonjë nga Informacioni që ju keni bërë më parë. 103 00:05:08,570 --> 00:05:12,110 Nëse ju dëshironi të shkruani ose append lloj varet nga situata. 104 00:05:12,110 --> 00:05:16,840 Por ju ndoshta do të dini se çfarë operacion drejtë është kur vjen koha. 105 00:05:16,840 --> 00:05:18,020 Pra, kjo është fopen. 106 00:05:18,020 --> 00:05:18,930 >> Po në lidhje me fclose? 107 00:05:18,930 --> 00:05:21,600 E pra, shumë e thjeshtë, fclose vetëm pranon file treguesin. 108 00:05:21,600 --> 00:05:24,000 Dhe si ju mund të presin, ajo mbyll këtë dosje. 109 00:05:24,000 --> 00:05:29,270 Dhe një herë ne kemi mbyllur një skedar, ne nuk mund të kryejnë ndonjë më shumë fotografi I / O funksioneve, 110 00:05:29,270 --> 00:05:31,420 lexim ose shkrim, në atë dosje. 111 00:05:31,420 --> 00:05:36,444 Ne duhet të ri-hapur paraqesë edhe një herë në mënyrë 112 00:05:36,444 --> 00:05:38,610 të vazhdojë të punojë me ajo duke përdorur I / O funksione. 113 00:05:38,610 --> 00:05:41,520 Mjetet Pra fclose ne jemi duke bërë duke punuar me këtë skedë. 114 00:05:41,520 --> 00:05:44,690 Dhe të gjithë ne kemi nevojë për të kaluar në është emri i një tregues file. 115 00:05:44,690 --> 00:05:50,010 Pra, në një çift slides më parë, ne fopened skedar 1 dot tekstin për lexim 116 00:05:50,010 --> 00:05:52,854 dhe ne të caktuar se paraqesin tregues të ptr1. 117 00:05:52,854 --> 00:05:55,020 Tani ne kemi vendosur ne jemi bërë e lexuar nga këtë dosje. 118 00:05:55,020 --> 00:05:56,561 Ne nuk duhet të bëjmë më me të. 119 00:05:56,561 --> 00:05:58,890 Ne mund ptr1 vetëm fclose. 120 00:05:58,890 --> 00:06:01,950 Dhe në mënyrë të ngjashme, mund të fclose ato të tjera. 121 00:06:01,950 --> 00:06:02,450 Në rregull. 122 00:06:02,450 --> 00:06:03,700 Pra, kjo është hapjes dhe mbylljes. 123 00:06:03,700 --> 00:06:05,780 Ata janë dy themelore duke filluar operacionet. 124 00:06:05,780 --> 00:06:08,050 >> Tani ne duam që në fakt të bëjë disa gjëra interesante, 125 00:06:08,050 --> 00:06:11,940 dhe funksioni i parë që ne do të të shihni se do të bëjë që është fgetc-- 126 00:06:11,940 --> 00:06:14,110 paraqesë të marrë një karakter. 127 00:06:14,110 --> 00:06:17,350 Kjo është ajo që fgetc përgjithësi do të përkthehet në. 128 00:06:17,350 --> 00:06:20,190 Qëllimi i saj në jetë është të lexoni karakterin e ardhshëm, 129 00:06:20,190 --> 00:06:22,079 ose në qoftë se kjo është shumë e juaj Thirrja e parë për fgetc 130 00:06:22,079 --> 00:06:23,870 për një fotografi të veçantë, karakteri i parë. 131 00:06:23,870 --> 00:06:26,210 Por pastaj pas kësaj, që ju të merrni një tjetër, 132 00:06:26,210 --> 00:06:31,500 karakteri shumë i ardhshëm i kësaj dosje, dhe dyqane atë në një variabël karakter. 133 00:06:31,500 --> 00:06:34,490 Siç e kemi bërë këtu, ch char barabartë fgetc, 134 00:06:34,490 --> 00:06:36,389 të kalojë në emër të një akrep file. 135 00:06:36,389 --> 00:06:38,180 Përsëri, kjo është shumë e rëndësishme këtu për të kujtuar 136 00:06:38,180 --> 00:06:41,430 që në mënyrë të ketë ky operacion të ketë sukses, 137 00:06:41,430 --> 00:06:45,690 skedari tregues vetë duhet të kem qenë e hapur për lexim. 138 00:06:45,690 --> 00:06:50,589 Ne nuk mund të lexojnë një karakter nga një skedar tregues hapëm për të shkruar. 139 00:06:50,589 --> 00:06:52,630 Pra, kjo është një nga më të Kufizimet e fopen, e drejtë? 140 00:06:52,630 --> 00:06:55,470 Ne duhet të kufizojnë veten vetëm për kryerjen e 141 00:06:55,470 --> 00:06:57,710 një operacion me një akrep file. 142 00:06:57,710 --> 00:07:00,220 Nëse ne të kërkuar për të lexuar dhe shkruaj nga të njëjtin skedar, 143 00:07:00,220 --> 00:07:03,840 ne do të kemi hapur dy të ndara fotografi në të njëjtën file-- pointers 144 00:07:03,840 --> 00:07:05,670 një për lexim, një për të shkruar. 145 00:07:05,670 --> 00:07:08,400 >> Pra, përsëri, vetëm arsyeja e Unë sjell se deri tani është 146 00:07:08,400 --> 00:07:11,920 sepse në qoftë se ne jemi duke shkuar për të bërë një telefonatë të fgetc, se duhet të kem skedar akrep 147 00:07:11,920 --> 00:07:14,172 qenë e hapur për lexim. 148 00:07:14,172 --> 00:07:15,880 Dhe pastaj goxha thjesht, të gjithë ne duhet të bëjmë 149 00:07:15,880 --> 00:07:17,546 është të kalojë në emrin e skedarit akrep. 150 00:07:17,546 --> 00:07:21,060 Pra, ch Char barabartë ptr1 fgetc. 151 00:07:21,060 --> 00:07:23,200 >> Kjo do të na marrë character-- tjetër 152 00:07:23,200 --> 00:07:25,575 ose përsëri, në qoftë se kjo është e para herë ne kemi bërë këtë thirrje, 153 00:07:25,575 --> 00:07:29,750 character-- e parë të çfarëdo file është theksuar nga ptr1. 154 00:07:29,750 --> 00:07:32,210 Kujtojnë se kjo ishte skedar 1 dot teksti. 155 00:07:32,210 --> 00:07:36,490 Ajo do të marrë karakterin e parë e që dhe ne do të ruajtur atë në ch ndryshueshme. 156 00:07:36,490 --> 00:07:37,941 Shumë i thjeshtë. 157 00:07:37,941 --> 00:07:40,190 Pra, ne kemi shikuar vetëm në tre funksionet dhe tashmë ne 158 00:07:40,190 --> 00:07:43,070 mund të bëjmë diçka mjaft i zoti. 159 00:07:43,070 --> 00:07:46,320 >> Pra, nëse ne kemi marrë këtë aftësi për të marrë një karakter 160 00:07:46,320 --> 00:07:48,943 dhe ne lak it-- kështu që ne të vazhdojë të marrë karaktere 161 00:07:48,943 --> 00:07:51,390 nga një skedar mbi dhe mbi dhe over-- tani ne 162 00:07:51,390 --> 00:07:54,500 mund të lexoni çdo të vetme Karakteri i një file. 163 00:07:54,500 --> 00:07:58,670 Dhe në qoftë se ne të shtypura çdo karakter menjëherë pas lexojmë atë, 164 00:07:58,670 --> 00:08:01,960 kemi lexuar tashmë nga një skedar dhe shtypur përmbajtjen e saj në ekran. 165 00:08:01,960 --> 00:08:05,610 Ne kemi concatenated në mënyrë efektive që dosja në ekran. 166 00:08:05,610 --> 00:08:09,670 Dhe kjo është ajo që Linux komandën cat bën. 167 00:08:09,670 --> 00:08:13,250 >> Nëse ju shkruani mace në emrin e file, atë do të shtypura nga të gjithë përmbajtjen 168 00:08:13,250 --> 00:08:15,160 i dosjes në dritaren tuaj terminalit. 169 00:08:15,160 --> 00:08:19,010 Dhe kështu kjo loop pak këtu, vetëm tre rreshta të kodit, 170 00:08:19,010 --> 00:08:23,270 por ajo në mënyrë efektive kopje identike komandën cat Linux. 171 00:08:23,270 --> 00:08:25,210 Pra, kjo sintaksë fuqi duket pak i çuditshëm, 172 00:08:25,210 --> 00:08:26,670 por këtu është ajo që po ndodh këtu. 173 00:08:26,670 --> 00:08:31,460 Ndërsa ch barabartë fgetc, PTR nuk është barabartë me EOF-- kjo është një kafshatë e tërë, 174 00:08:31,460 --> 00:08:34,669 por le të thyejnë atë poshtë vetëm kështu që është e qartë në sintaksë. 175 00:08:34,669 --> 00:08:37,169 Unë e kam konsoliduar atë për hir të hapësirës, 176 00:08:37,169 --> 00:08:39,049 edhe pse kjo është pak sintaksore ndërlikuar. 177 00:08:39,049 --> 00:08:41,194 >> Pra, kjo pjesë në të drejtën e gjelbër tani, çfarë është ajo duke bërë? 178 00:08:41,194 --> 00:08:42,860 E pra, kjo është vetëm thirrja jonë fgetc, e drejtë? 179 00:08:42,860 --> 00:08:44,530 Ne e kemi parë se më parë. 180 00:08:44,530 --> 00:08:49,500 Është marrë një karakter nga file. 181 00:08:49,500 --> 00:08:53,220 Pastaj ne krahasojmë se Karakteri kundër eof. 182 00:08:53,220 --> 00:08:57,470 EOF është një vlerë e veçantë që është përcaktohet në io.h standarte, i cili 183 00:08:57,470 --> 00:08:59,390 është fundi i skedarit karakterit. 184 00:08:59,390 --> 00:09:03,450 Pra, në thelb ajo që do të ndodhë është ky lak do të lexojë një karakter, 185 00:09:03,450 --> 00:09:07,445 krahasojnë atë me eof, The fund të file karakterit. 186 00:09:07,445 --> 00:09:10,070 Nëse ata nuk përputhen, kështu që ne nuk kemi arritur në fund të dosjes, 187 00:09:10,070 --> 00:09:11,490 ne do të shtypura atë karakter jashtë. 188 00:09:11,490 --> 00:09:13,740 Pastaj ne do të kthehemi me fillimi i lak përsëri. 189 00:09:13,740 --> 00:09:18,310 Ne do të marrë një karakter, kontrolloni kundër eof, print it out, dhe kështu me radhë 190 00:09:18,310 --> 00:09:21,094 dhe kështu me radhë e kështu me radhë, looping përmes në këtë mënyrë 191 00:09:21,094 --> 00:09:22,760 deri sa ne kemi arritur në fund të file. 192 00:09:22,760 --> 00:09:24,593 Dhe pastaj deri në atë pikë, ne do të kemi shtypur 193 00:09:24,593 --> 00:09:26,210 nga të gjithë përmbajtjen e dosjes. 194 00:09:26,210 --> 00:09:29,450 Pra, përsëri, ne kemi parë vetëm fopen, fclose, dhe fgetc 195 00:09:29,450 --> 00:09:34,950 dhe tashmë ne mund të kopjuar një komandë terminal Linux. 196 00:09:34,950 --> 00:09:38,850 >> Siç thashë në fillim, kemi pasur fgetc dhe fputc, 197 00:09:38,850 --> 00:09:41,860 dhe fputc ishte shok Funksioni i fgetc. 198 00:09:41,860 --> 00:09:44,880 Dhe kështu, si ju mund të imagjinoni, ajo është shkrimi ekuivalent. 199 00:09:44,880 --> 00:09:49,440 Kjo na lejon për të shkruar një karakter të vetëm në një skedar. 200 00:09:49,440 --> 00:09:53,290 >> Përsëri, caveat qenë, vetëm si ajo ishte me fgetc, dosja 201 00:09:53,290 --> 00:09:56,660 se ne jemi me shkrim të duhet të kem qenë e hapur për të shkruar ose për appending. 202 00:09:56,660 --> 00:10:00,820 Nëse ne përpiqemi dhe të përdorni fputc në një skedar se ne kemi hapur për lexim, 203 00:10:00,820 --> 00:10:02,760 ne jemi duke shkuar për të vuajtur pak e një gabimi. 204 00:10:02,760 --> 00:10:04,440 Por thirrja është shumë e thjeshtë. 205 00:10:04,440 --> 00:10:08,000 Kapitali fputc Një ptr2, gjithë që do të bëjë është ajo e 206 00:10:08,000 --> 00:10:12,040 do të shkruaj letër në një skedar në 2 pikë 207 00:10:12,040 --> 00:10:14,760 teksti, i cili ishte emri i paraqesë hapëm dhe caktuar 208 00:10:14,760 --> 00:10:17,280 tregues të ptr2. 209 00:10:17,280 --> 00:10:20,430 Pra, ne jemi duke shkuar për të shkruar një Kapitali Një të paraqesë 2 dot tekstin. 210 00:10:20,430 --> 00:10:24,592 Dhe ne do të shkruaj një thirrje pikë të paraqesë 3 dot 211 00:10:24,592 --> 00:10:27,330 teksti, i cili u vuri në dukje nga ptr3. 212 00:10:27,330 --> 00:10:29,730 Pra, përsëri, shumë i thjeshtë këtu. 213 00:10:29,730 --> 00:10:32,727 >> Por tani ne mund të bëjmë një tjetër gjë. 214 00:10:32,727 --> 00:10:34,560 Ne kemi këtë shembull ne ishim vetëm duke shkuar më shumë se 215 00:10:34,560 --> 00:10:38,950 për të qenë në gjendje për të replikuar cat Komandë Linux, ai që printime nga 216 00:10:38,950 --> 00:10:40,500 në ekran. 217 00:10:40,500 --> 00:10:43,510 E pra, tani që ne kemi aftësinë për të lexuar karaktere nga fotografi 218 00:10:43,510 --> 00:10:46,590 dhe shkruani karaktere të dosjeve, pse nuk kemi vetëm të zëvendësojë atë 219 00:10:46,590 --> 00:10:50,720 thirrje për printf me një thirrje për fputc. 220 00:10:50,720 --> 00:10:54,090 >> Dhe tani ne kemi dyfishta CP, një komandë shumë bazë Linux 221 00:10:54,090 --> 00:10:59,100 që kemi folur për rrugë të gjatë më parë në Linux komandat video të. 222 00:10:59,100 --> 00:11:01,070 Ne kemi në mënyrë efektive të dyfishta që e drejtë këtu. 223 00:11:01,070 --> 00:11:04,790 Ne jemi duke lexuar një karakter dhe pastaj ne jemi shkruar atë karakter në një tjetër fotografi. 224 00:11:04,790 --> 00:11:07,660 Leximi nga një skedar, shkrim në një tjetër, pa pushim 225 00:11:07,660 --> 00:11:11,350 pa pushim deri sa ne goditi EOF. 226 00:11:11,350 --> 00:11:14,250 Ne kemi marrë në fund të paraqesë ne jemi duke u përpjekur të kopjoni nga. 227 00:11:14,250 --> 00:11:18,500 Dhe nga kjo ne do të kemi shkruar të gjithë nga personazhet ne kemi nevojë për dosjen 228 00:11:18,500 --> 00:11:19,500 se ne jemi me shkrim për të. 229 00:11:19,500 --> 00:11:24,270 Pra, kjo është cp, kopja komanda Linux. 230 00:11:24,270 --> 00:11:26,550 >> Në fillim të kjo video, kisha caveat 231 00:11:26,550 --> 00:11:29,840 që ne do të flasim një pak për pointers. 232 00:11:29,840 --> 00:11:32,480 Këtu është veçanërisht ku ne jemi do të flasim për pointers 233 00:11:32,480 --> 00:11:34,800 përveç të paraqesë pointers. 234 00:11:34,800 --> 00:11:37,870 Pra, ky funksion duket lloj i frikshme. 235 00:11:37,870 --> 00:11:39,120 Ajo ka disa parametra. 236 00:11:39,120 --> 00:11:40,430 Ka shumë ndodh këtu. 237 00:11:40,430 --> 00:11:42,760 Ka shumë të ndryshme ngjyrat dhe tekste. 238 00:11:42,760 --> 00:11:47,100 Por me të vërtetë, kjo është vetëm Versioni i përgjithshëm i fgetc 239 00:11:47,100 --> 00:11:50,110 që na lejon të marrë ndonjë sasia e informacionit. 240 00:11:50,110 --> 00:11:53,560 Ajo mund të jetë pak i paefektshëm në qoftë se ne jemi duke marrë karaktere një në një kohë, 241 00:11:53,560 --> 00:11:55,770 iterating përmes file nje karakter në një kohë. 242 00:11:55,770 --> 00:12:00,230 Nuk do të jetë nicer për të marrë 100 në një kohë ose 500 në një kohë? 243 00:12:00,230 --> 00:12:03,250 >> E pra, fread dhe funksioni i saj shoqërues fwrite, të cilat ne do të flasim për 244 00:12:03,250 --> 00:12:05,490 në një të dytë, të na lejojë të bëjë vetëm se. 245 00:12:05,490 --> 00:12:08,480 Ne mund të lexoni një sasi arbitrare e informacionit nga një file 246 00:12:08,480 --> 00:12:10,290 dhe ne e ruajtur atë diku përkohësisht. 247 00:12:10,290 --> 00:12:12,980 Në vend të qenë në gjendje për të vetëm përshtaten atë në një variable të vetme, 248 00:12:12,980 --> 00:12:15,790 ne mund të kenë nevojë për të ruajtur atë në një rrjet. 249 00:12:15,790 --> 00:12:19,980 Dhe kështu, ne të kalojë në katër Argumentet për fread-- një akrep 250 00:12:19,980 --> 00:12:23,940 në vendin ku ne jemi duke shkuar për të ruajtur informacione, 251 00:12:23,940 --> 00:12:29,180 sa i madh çdo njësi e informacionit do të jetë, se sa njësitë e informacionit 252 00:12:29,180 --> 00:12:35,192 ne duam të blerë, dhe nga të cilat skedar ne duam për të marrë ato. 253 00:12:35,192 --> 00:12:37,150 Ndoshta më e mirë e ilustruar me një shembull këtu. 254 00:12:37,150 --> 00:12:41,640 Pra, le të themi se ne të deklarojë një grup prej 10 integers. 255 00:12:41,640 --> 00:12:45,080 Ne kemi deklaruar vetëm mbi rafte në mënyrë arbitrare int arr 10. 256 00:12:45,080 --> 00:12:46,970 Pra, kjo është shumë i thjeshtë. 257 00:12:46,970 --> 00:12:51,970 Tani ajo që ne po bëjmë edhe pse është frecall është ne jemi duke lexuar madhësinë e int 258 00:12:51,970 --> 00:12:54,180 kohët 10 bytes të informacionit. 259 00:12:54,180 --> 00:12:59,040 Madhësia e int qenies four-- kjo është madhësia e një numër të plotë në c. 260 00:12:59,040 --> 00:13:02,790 >> Pra, ajo që ne po bëjmë është që ne jemi duke lexuar 40 bytes vlerë e informacionit 261 00:13:02,790 --> 00:13:05,850 nga dosja vuri në dukje nga PTR. 262 00:13:05,850 --> 00:13:08,600 Dhe ne jemi ruajtjen ato 40 bytes diku 263 00:13:08,600 --> 00:13:12,080 ku ne kemi vënë mënjanë 40 bytes vlerë të kujtesës. 264 00:13:12,080 --> 00:13:15,970 Për fat të mirë, ne kemi bërë tashmë se nga deklaruar ARR, se array drejtë atje. 265 00:13:15,970 --> 00:13:19,770 Që është i aftë të mbajtjes 10 njësi katër-byte. 266 00:13:19,770 --> 00:13:22,860 Pra në total, ajo mund të mbajë 40 bytes vlerë e informacionit. 267 00:13:22,860 --> 00:13:26,540 Dhe ne jemi tani duke lexuar 40 bytes e informacionit nga dosjes, 268 00:13:26,540 --> 00:13:30,330 dhe ne jemi ruajtjen atë në arr. 269 00:13:30,330 --> 00:13:35,470 >> Kujtojnë nga video për pointers se emri i një grup, të tilla si arr, 270 00:13:35,470 --> 00:13:38,370 është me të vërtetë vetëm një akrep të elementit të parë. 271 00:13:38,370 --> 00:13:43,680 Pra, kur ne të kalojë në arr atje, ne janë, në fakt, duke kaluar në një tregues. 272 00:13:43,680 --> 00:13:46,120 >> Në mënyrë të ngjashme ne mund të bëjmë this-- ne nuk domosdoshmërisht 273 00:13:46,120 --> 00:13:51,200 nevojë për të shpëtuar tampon tonë në rafte. 274 00:13:51,200 --> 00:13:54,990 Ne gjithashtu mund të ndajë dinamike një tampon si kjo, duke përdorur malloc. 275 00:13:54,990 --> 00:13:57,340 Mos harroni, kur ne dinamike të siguroj kujtesë, 276 00:13:57,340 --> 00:14:00,550 ne jemi duke kursyer atë në grumbull, jo rafte. 277 00:14:00,550 --> 00:14:02,110 Por ajo është ende një tampon. 278 00:14:02,110 --> 00:14:06,810 >> Ajo ende, në këtë rast, është duke mbajtur 640 bytes i informacionit 279 00:14:06,810 --> 00:14:09,230 sepse një të dyfishtë merr tetë bytes. 280 00:14:09,230 --> 00:14:11,570 Dhe ne jemi duke kërkuar për 80 prej tyre. 281 00:14:11,570 --> 00:14:13,770 Ne duam që të ketë hapësirë për të mbajtur 80 dyshe. 282 00:14:13,770 --> 00:14:17,210 Pra, 80 herë 8 është 640 bytes informacion. 283 00:14:17,210 --> 00:14:21,880 Dhe kjo thirrje për fread është mbledhjen e 640 bytes të informacionit 284 00:14:21,880 --> 00:14:27,770 nga dosja vuri në dukje të nga PTR dhe ruajtjen atë tani në arr2. 285 00:14:27,770 --> 00:14:32,770 >> Tani ne mund të trajtojmë fread vetëm si një thirrje për fgetc. 286 00:14:32,770 --> 00:14:37,140 Në këtë rast, ne jemi vetëm duke u përpjekur për të marrë një karakter nga file. 287 00:14:37,140 --> 00:14:40,070 Dhe ne nuk kemi nevojë një grup për të mbajtur një karakter. 288 00:14:40,070 --> 00:14:43,170 Ne vetëm mund të ruajë atë në një variabël karakter. 289 00:14:43,170 --> 00:14:46,390 >> Kapur, megjithatë, është se kur ne vetëm duhet një ndryshore, 290 00:14:46,390 --> 00:14:50,290 ne kemi nevojë për të kaluar në Adresa e kësaj variable 291 00:14:50,290 --> 00:14:52,550 sepse kujtoj se Argumenti i parë për të fread 292 00:14:52,550 --> 00:14:59,210 është një tregues për vendin dhe kujtesës ku ne duam të ruajtur informacionin. 293 00:14:59,210 --> 00:15:01,550 Përsëri, emri i një array është një akrep. 294 00:15:01,550 --> 00:15:04,200 Pra, ne nuk kemi nevojë të bëjmë rrjet ampersand. 295 00:15:04,200 --> 00:15:07,270 Por c, karakteri c këtu, nuk është një grup. 296 00:15:07,270 --> 00:15:08,390 Është vetëm një variabël. 297 00:15:08,390 --> 00:15:11,840 Dhe kështu që ne kemi nevojë për të kaluar një c simbol për të treguar 298 00:15:11,840 --> 00:15:15,350 se kjo është adresa ku ne duam për të ruajtur këtë byte një informacioni, 299 00:15:15,350 --> 00:15:20,479 ky karakter ai që ne jemi mbledhur nga PTR. 300 00:15:20,479 --> 00:15:22,270 Fwrite-- unë do të shkoj nëpër kjo pak më shumë 301 00:15:22,270 --> 00:15:25,440 quickly-- është shumë e shumë ekuivalent i saktë i fread 302 00:15:25,440 --> 00:15:27,720 përveç se është për të shkruar në vend të leximit, vetëm 303 00:15:27,720 --> 00:15:31,610 si më other-- ne kemi pasur të hapur dhe të ngushtë, të marrë një karakter, 304 00:15:31,610 --> 00:15:32,530 shkruaj një karakter. 305 00:15:32,530 --> 00:15:35,040 Tani është marrë arbitrare sasia e informacionit, 306 00:15:35,040 --> 00:15:37,170 shumë të drejtë arbitrare e informacionit. 307 00:15:37,170 --> 00:15:39,790 Pra, ashtu si më parë, ne mund të kanë një rrjet të integers 10 308 00:15:39,790 --> 00:15:43,210 ku ne tashmë kemi informacioni i ruajtur, ndoshta. 309 00:15:43,210 --> 00:15:46,580 >> Kjo ishte ndoshta disa rreshta të kodit që duhet të shkojë mes të këtyre dy 310 00:15:46,580 --> 00:15:49,990 ku kam mbush me arr diçka kuptimplotë. 311 00:15:49,990 --> 00:15:51,880 I mbushur atë me 10 integers të ndryshme. 312 00:15:51,880 --> 00:15:54,920 Dhe në vend të kësaj, ajo që unë jam duke bërë është shkruar nga arr 313 00:15:54,920 --> 00:15:58,600 dhe mbledhjen e informacionit nga arr. 314 00:15:58,600 --> 00:16:02,390 Dhe unë jam duke marrë atë informacion dhe duke i vënë atë në dosje. 315 00:16:02,390 --> 00:16:05,410 >> Pra, në vend të të qenit nga dosja për tampon, 316 00:16:05,410 --> 00:16:08,790 ne jemi tani duke shkuar nga tampon në dosjen. 317 00:16:08,790 --> 00:16:10,580 Pra, kjo është vetëm e kundërta. 318 00:16:10,580 --> 00:16:16,680 Pra, përsëri, ashtu si më parë, ne mund të gjithashtu kanë një copë grumbull kujtesës 319 00:16:16,680 --> 00:16:19,600 se ne kemi dinamike ndarë dhe të lexoni nga ajo 320 00:16:19,600 --> 00:16:21,570 dhe shkruajnë se në dosjen. 321 00:16:21,570 --> 00:16:24,900 >> Dhe ne gjithashtu kemi një variable të vetme e aftë të mbajnë një bajt 322 00:16:24,900 --> 00:16:27,200 e informacionit, të tilla si një karakter. 323 00:16:27,200 --> 00:16:29,830 Por përsëri, ne kemi nevojë për të kaluar në adresa e kësaj variable 324 00:16:29,830 --> 00:16:31,840 kur ne duam të lexojmë nga ajo. 325 00:16:31,840 --> 00:16:35,280 Pra, ne mund të shkruani informacionin ne gjejmë në atë adresë 326 00:16:35,280 --> 00:16:39,050 në fotografi akrep, PTR. 327 00:16:39,050 --> 00:16:41,630 >> Ka shumë të tjera fotografi i madh I / O funksionet 328 00:16:41,630 --> 00:16:44,650 që bëjnë gjëra të ndryshme përveç ato ne kemi biseduar për sot. 329 00:16:44,650 --> 00:16:46,450 Një çift nga ato ju mund të gjeni të dobishme 330 00:16:46,450 --> 00:16:50,840 janë fgets dhe fputs, të cilat janë ekuivalente 331 00:16:50,840 --> 00:16:56,190 e fgetc dhe fputc por për leximin një varg të vetëm nga një skedar. 332 00:16:56,190 --> 00:16:59,020 Në vend të një karakter të vetëm, ajo do të lexoni një varg të tërë. 333 00:16:59,020 --> 00:17:02,940 fprintf, e cila në thelb lejon ju për të përdorur printf për të shkruar të paraqesin. 334 00:17:02,940 --> 00:17:05,619 Pra, ashtu si ju mund të bëni të zëvendësim ndryshueshme përdorur 335 00:17:05,619 --> 00:17:09,900 placeholders për qind i dhe për qind d, dhe kështu me radhë, me printf 336 00:17:09,900 --> 00:17:14,690 ju në mënyrë të ngjashme mund të marrë string printf dhe të shtypura diçka 337 00:17:14,690 --> 00:17:16,800 si kjo në një skedar. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- qoftë se ju keni një DVD player është analogjia unë zakonisht përdorin here-- 339 00:17:20,720 --> 00:17:23,109 është lloj i si duke përdorur tuaj rewind shpejtë përpara dhe 340 00:17:23,109 --> 00:17:25,819 butona për të lëvizur nëpër film. 341 00:17:25,819 --> 00:17:28,369 Në mënyrë të ngjashme, ju mund të lëvizin nëpër dosje. 342 00:17:28,369 --> 00:17:30,250 Një nga gjërat brenda se struktura e skedarëve 343 00:17:30,250 --> 00:17:34,270 se c krijon për ju është një tregues e ku je në dosjen. 344 00:17:34,270 --> 00:17:36,420 A jeni në shumë duke filluar, në bajt zero? 345 00:17:36,420 --> 00:17:39,290 A jeni në bajt 100, byte 1000, dhe kështu me radhë? 346 00:17:39,290 --> 00:17:44,340 Ju mund të përdorni për të lëvizur në mënyrë arbitrare fseek se tregues përpara ose prapa. 347 00:17:44,340 --> 00:17:46,744 >> Dhe ftell, përsëri të ngjashme me një DVD player, 348 00:17:46,744 --> 00:17:49,660 është si një orë të vogël që tregon ju sa minuta dhe sekonda ju 349 00:17:49,660 --> 00:17:52,480 janë në një film të caktuar. 350 00:17:52,480 --> 00:17:56,990 Në mënyrë të ngjashme, ftell ju tregon se si shumë bytes ju jeni në dosjen. 351 00:17:56,990 --> 00:18:00,210 feof është një version i ndryshëm për zbulimin e nëse ju keni 352 00:18:00,210 --> 00:18:01,700 arritur në fund të file. 353 00:18:01,700 --> 00:18:03,600 Dhe ferror është një funksion që ju mund të përdorni 354 00:18:03,600 --> 00:18:06,959 për të zbuluar nëse diçka ka shkuar punës gabuar me një file. 355 00:18:06,959 --> 00:18:08,750 Përsëri, kjo është vetëm kruarje sipërfaqe. 356 00:18:08,750 --> 00:18:12,730 Ka ende shumë më tepër skedar I / O funksionon në io.h. standarde 357 00:18:12,730 --> 00:18:16,620 Por kjo ndoshta do të merrni ju ka filluar punën me fotografi pointers. 358 00:18:16,620 --> 00:18:17,640 Unë jam Doug Lloyd. 359 00:18:17,640 --> 00:18:19,750 Kjo është CS50. 360 00:18:19,750 --> 00:18:21,669