1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> ГОВОРИ: До сада, вероватно да је већина ваших програма 3 00:00:07,870 --> 00:00:10,170 су мало пролазна. 4 00:00:10,170 --> 00:00:13,310 Ви покренете програм као Марио или похлепан. 5 00:00:13,310 --> 00:00:17,350 То чини нешто, можда затражити да корисник неке информације, 6 00:00:17,350 --> 00:00:20,400 принт неки излаз на екран, али када је ваш програм је завршен, 7 00:00:20,400 --> 00:00:23,252 Заиста нема доказа нема је икада покренути на првом месту. 8 00:00:23,252 --> 00:00:25,960 Мислим, наравно, можда је остало отворити у прозору терминала, 9 00:00:25,960 --> 00:00:29,770 али ако избришете екран, ту је Заиста нема доказа да је постојао. 10 00:00:29,770 --> 00:00:33,720 Ми немамо средства за складиштење упорна информације, информације 11 00:00:33,720 --> 00:00:36,890 да постоји после нашег Програм је престао ради, 12 00:00:36,890 --> 00:00:39,241 или нисмо до овог тренутка. 13 00:00:39,241 --> 00:00:41,490 Срећом ипак, Ц нема дају нам могућност 14 00:00:41,490 --> 00:00:44,220 за то применом нешто што се зове 15 00:00:44,220 --> 00:00:48,330 фајл, структура која у основи представља слику да би удвостручити 16 00:00:48,330 --> 00:00:53,826 кликните на рачунару, ако сте користи у графичком корисничком окружењу. 17 00:00:53,826 --> 00:00:55,700 Генерално када се ради са ц, ми уствари 18 00:00:55,700 --> 00:00:59,965 ће радити са показивачи да филес-- фајл старс-- 19 00:00:59,965 --> 00:01:02,090 осим мало када говоримо о пар 20 00:01:02,090 --> 00:01:04,560 функција које рад са датотекама показивачима. 21 00:01:04,560 --> 00:01:08,990 Не морате да стварно ископали предубоко у разумијевање тројкама 22 00:01:08,990 --> 00:01:09,730 сами. 23 00:01:09,730 --> 00:01:12,870 Ту је мало Теени мало где ћемо разговарати о њима, 24 00:01:12,870 --> 00:01:18,090 али генерално филе савете и показивачи, док је повезана, 25 00:01:18,090 --> 00:01:20,290 нису баш иста ствар. 26 00:01:20,290 --> 00:01:22,440 >> Сада шта мислим кад Кажем сталне податке? 27 00:01:22,440 --> 00:01:23,650 Шта је упорне података? 28 00:01:23,650 --> 00:01:25,232 Зашто ми бринемо о томе? 29 00:01:25,232 --> 00:01:27,190 Рецимо, на пример, да да сте покренули програм 30 00:01:27,190 --> 00:01:29,850 или сте преснимити програм који је игра, 31 00:01:29,850 --> 00:01:32,960 и желите да пратите од свих потеза корисничким 32 00:01:32,960 --> 00:01:36,620 тако да мозда ако нешто крене наопако, можете да прегледате фајл после утакмице. 33 00:01:36,620 --> 00:01:39,970 То је оно што смо мислили када смо говоримо о упорних података. 34 00:01:39,970 --> 00:01:43,930 >> У току вођења ваше Програм, датотека се креира. 35 00:01:43,930 --> 00:01:45,680 А када ваш програм је престао ради, 36 00:01:45,680 --> 00:01:48,689 тај документ још увек постоји на вашем систему. 37 00:01:48,689 --> 00:01:50,230 И можемо гледати и испитати га. 38 00:01:50,230 --> 00:01:53,670 И тако тај програм ће бити постављен на су створили неке сталне податке, 39 00:01:53,670 --> 00:01:57,390 подаци постоје након програма је завршио ради. 40 00:01:57,390 --> 00:02:02,320 >> Сада све ове функције које раде са стварањем датотеке и манипулисање 41 00:02:02,320 --> 00:02:04,940 их на разне начине живе у стандардном ио.х, 42 00:02:04,940 --> 00:02:08,210 што је заглавље датотеке које ти си вероватно био фунта 43 00:02:08,210 --> 00:02:10,910 укључујући и оне на врху прилично много све своје програме 44 00:02:10,910 --> 00:02:14,130 јер садржи једну од већина корисних функција за нас, 45 00:02:14,130 --> 00:02:16,130 иф, који такође омогућава живи у стандардном ио.х. 46 00:02:16,130 --> 00:02:20,400 Дакле, не морате да фунта укључује било који додатни фајлови вероватно 47 00:02:20,400 --> 00:02:23,540 како би се рад са датотекама показивачима. 48 00:02:23,540 --> 00:02:29,980 >> Сада сваки функција фајл показивач, или сваки фајл И / О Инпут Оутпут 49 00:02:29,980 --> 00:02:33,310 функција, прихвата као један од његових параметара или улаза 50 00:02:33,310 --> 00:02:35,822 поинтер-- фајл осим за једну, фопен, која 51 00:02:35,822 --> 00:02:38,280 је оно што користите да бисте добили фајл показивач на првом месту. 52 00:02:38,280 --> 00:02:41,010 Али након што сте отворили филе и добићете датотека путоказе, 53 00:02:41,010 --> 00:02:43,510 тада можете их проћи као аргументе различитих функција 54 00:02:43,510 --> 00:02:46,720 ћемо причати о Данас, као и многи други 55 00:02:46,720 --> 00:02:48,520 тако да можете да радите са датотекама. 56 00:02:48,520 --> 00:02:50,980 >> Дакле, постоје шест прилично заједнички основни оне 57 00:02:50,980 --> 00:02:52,870 да ћемо данас говорити. 58 00:02:52,870 --> 00:02:57,160 фопен његов пратилац и Функција фцлосе, фгетц 59 00:02:57,160 --> 00:03:02,670 и његова пратилац функција фпутц, и фреад и његов пратилац функција, 60 00:03:02,670 --> 00:03:03,820 фврите. 61 00:03:03,820 --> 00:03:05,180 Дакле, хајде да се право у њега. 62 00:03:05,180 --> 00:03:07,050 >> фопен-- шта он ради? 63 00:03:07,050 --> 00:03:10,050 Па, то отвара фајл и даје вам фајл показивач на њу, 64 00:03:10,050 --> 00:03:14,000 тако да онда можете користити да филе показивач као аргумент 65 00:03:14,000 --> 00:03:16,730 на било који од другу Филе И / О функције. 66 00:03:16,730 --> 00:03:19,100 Najvažnija stvar да се сетим са фопен 67 00:03:19,100 --> 00:03:24,222 је да након што сте отворили филе или је позив попут оног овде, 68 00:03:24,222 --> 00:03:26,930 морате да проверите да ли да показивач да си се вратио 69 00:03:26,930 --> 00:03:28,320 није једнак нулл. 70 00:03:28,320 --> 00:03:31,320 Ако нисте гледали видео на показивачи, ово не би имало смисла. 71 00:03:31,320 --> 00:03:35,639 Али ако покушаш и дереференце нула показивач опозив, 72 00:03:35,639 --> 00:03:38,180 ваш програм ће вероватно трпети сегментације [неразумљиво]. 73 00:03:38,180 --> 00:03:40,540 Желимо да се уверим да Има легитимно показивача леђа. 74 00:03:40,540 --> 00:03:43,665 Огромна већина времена ћемо су добили легитимни показивач назад 75 00:03:43,665 --> 00:03:45,280 и то неће бити проблем. 76 00:03:45,280 --> 00:03:46,760 >> Па како да се позив на фопен? 77 00:03:46,760 --> 00:03:48,051 Изгледа прилично овако. 78 00:03:48,051 --> 00:03:52,690 Величина звездице птр-- ПТР као генерички наме фор филе поинтер-- фопен 79 00:03:52,690 --> 00:03:57,300 и пролазимо у две ствари, име датотеке и операција желимо да предузме. 80 00:03:57,300 --> 00:04:01,690 Тако да можда има позив да личи ово-- фајл са ПТР 1 износи фопен 81 00:04:01,690 --> 00:04:04,040 пример1.ткт. 82 00:04:04,040 --> 00:04:07,020 И операција сам изабрао је Р. 83 00:04:07,020 --> 00:04:08,639 >> Дакле, шта мислите р је овде? 84 00:04:08,639 --> 00:04:11,180 Које су врсте ствари које би могао да уради да би фајлова? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 Дакле, р је операција коју смо изабрати када желимо да прочита датотеку. 87 00:04:17,500 --> 00:04:20,260 Тако бисмо у основи када правимо позив овако 88 00:04:20,260 --> 00:04:25,440 да себи добијање фајл показивач тако да бисмо онда могли прочитати информације 89 00:04:25,440 --> 00:04:27,770 од пример1.ткт. 90 00:04:27,770 --> 00:04:34,190 >> Слично томе, можемо отворити датотеке 2.ткт за писање и тако да може да прође птр2, 91 00:04:34,190 --> 00:04:38,210 фајл показивач сам овде направили, као аргумент за било коју функцију која 92 00:04:38,210 --> 00:04:40,080 пише информације у датотеку. 93 00:04:40,080 --> 00:04:43,767 И слично писању, ту је такође опција за додати: а. 94 00:04:43,767 --> 00:04:45,600 Разлика између писање и додавање 95 00:04:45,600 --> 00:04:50,920 будући да када пишете у фајл, ако направите позив да фопен за писање 96 00:04:50,920 --> 00:04:54,761 и да датотека већ постоји, то је ће да замени цео фајл. 97 00:04:54,761 --> 00:04:56,510 То ће почети на самом почетку, 98 00:04:56,510 --> 00:04:58,820 брисање све информације То је већ тамо. 99 00:04:58,820 --> 00:05:02,210 >> Док ако га отворити за додавање, то ће ићи до краја датотеке 100 00:05:02,210 --> 00:05:04,340 ако већ постоји текст у да или информације у њој, 101 00:05:04,340 --> 00:05:06,040 и она ће затим почети писање одатле. 102 00:05:06,040 --> 00:05:08,570 Тако нећете изгубити било који од информације које сте раније. 103 00:05:08,570 --> 00:05:12,110 Било да желите да пишете или додати некако зависи од ситуације. 104 00:05:12,110 --> 00:05:16,840 Али вероватно ћете знати шта је Право операција је када за то дође време. 105 00:05:16,840 --> 00:05:18,020 Дакле, то је фопен. 106 00:05:18,020 --> 00:05:18,930 >> Шта фцлосе? 107 00:05:18,930 --> 00:05:21,600 Па, прилично једноставно, фцлосе само прихвата фајл показивач. 108 00:05:21,600 --> 00:05:24,000 И као што би се могло очекивати, она затвара тај фајл. 109 00:05:24,000 --> 00:05:29,270 И кад смо затворени датотеку, не можемо обављати више Филе И / О функције, 110 00:05:29,270 --> 00:05:31,420 читања или писања, на тај фајл. 111 00:05:31,420 --> 00:05:36,444 Морамо да поново отвори филе други пут како 112 00:05:36,444 --> 00:05:38,610 да настави рад са користећи И / О функције. 113 00:05:38,610 --> 00:05:41,520 Тако фцлосе значи да смо урадили рад са овом фајлу. 114 00:05:41,520 --> 00:05:44,690 И све што је потребно да прође у је име датотеке показивачем. 115 00:05:44,690 --> 00:05:50,010 Дакле, на пар склизне назад, ми фопенед фајл 1 тачка текст за читање 116 00:05:50,010 --> 00:05:52,854 и ми додељен да филе показивач на птр1. 117 00:05:52,854 --> 00:05:55,020 Сада смо одлучили смо врши читање из тог фајла. 118 00:05:55,020 --> 00:05:56,561 Ми не треба да урадите више са њим. 119 00:05:56,561 --> 00:05:58,890 Можемо само мктиме птр1. 120 00:05:58,890 --> 00:06:01,950 Слично томе, могли смо фцлосе остале. 121 00:06:01,950 --> 00:06:02,450 У реду. 122 00:06:02,450 --> 00:06:03,700 Тако да је отварала и затварала. 123 00:06:03,700 --> 00:06:05,780 То су два основна почевши операције. 124 00:06:05,780 --> 00:06:08,050 >> Сада желимо да заиста учинити неке занимљиве ствари, 125 00:06:08,050 --> 00:06:11,940 и прва функција да ћемо видим да ће се то уради је фгетц-- 126 00:06:11,940 --> 00:06:14,110 филе добили карактер. 127 00:06:14,110 --> 00:06:17,350 То је оно што фгетц генерално би превести. 128 00:06:17,350 --> 00:06:20,190 Њен циљ у животу је да прочитајте следећи карактер, 129 00:06:20,190 --> 00:06:22,079 или ако је то ваш врло Први позив фгетц 130 00:06:22,079 --> 00:06:23,870 за одређену датотеку, је први карактер. 131 00:06:23,870 --> 00:06:26,210 Али након тога, добијате следећи, 132 00:06:26,210 --> 00:06:31,500 већ следећег карактер тог фајла, и складишти је у променљивој карактер. 133 00:06:31,500 --> 00:06:34,490 Као што смо урадили овде, Чар ЦХ једнако фгетц, 134 00:06:34,490 --> 00:06:36,389 пролазе у име датотеке показивача. 135 00:06:36,389 --> 00:06:38,180 Опет, врло је важно да се присетимо 136 00:06:38,180 --> 00:06:41,430 која да би имали ова операција успе, 137 00:06:41,430 --> 00:06:45,690 сама показивач фајл Мора отворен је за читање. 138 00:06:45,690 --> 00:06:50,589 Ми не може да прочита лик из датотеке показивач који смо отворили за писање. 139 00:06:50,589 --> 00:06:52,630 Дакле, то је један од ограничења фопен, зар не? 140 00:06:52,630 --> 00:06:55,470 Морамо да ограничи сами само на вршење 141 00:06:55,470 --> 00:06:57,710 једна операција са једним датотеке показивачем. 142 00:06:57,710 --> 00:07:00,220 Ако бисмо хтели да читају и пишу из истог фајла, 143 00:07:00,220 --> 00:07:03,840 бисмо имали отворена два одвојена филе показивачи на исти филе-- 144 00:07:03,840 --> 00:07:05,670 једна за читање, један за писање. 145 00:07:05,670 --> 00:07:08,400 >> Дакле, поново, једини разлог Ја доносим да до сада 146 00:07:08,400 --> 00:07:11,920 јер ако ћемо да направимо позив да фгетц, тај фајл показивач мора да 147 00:07:11,920 --> 00:07:14,172 отворен је за читање. 148 00:07:14,172 --> 00:07:15,880 А онда прилично једноставно, све што треба да урадите 149 00:07:15,880 --> 00:07:17,546 је прошао у име датотеке показивача. 150 00:07:17,546 --> 00:07:21,060 Дакле, Чар ЦХ једнака фгетц птр1. 151 00:07:21,060 --> 00:07:23,200 >> То ће нас одвести следећи цхарацтер-- 152 00:07:23,200 --> 00:07:25,575 или, ако је ово опет прва време направили смо овај позив, 153 00:07:25,575 --> 00:07:29,750 први цхарацтер-- од свега Филе је истакао да од птр1. 154 00:07:29,750 --> 00:07:32,210 Подсетимо се да је то био датотека 1 тачка текста. 155 00:07:32,210 --> 00:07:36,490 То ће добити први карактер који и ми ћемо га сачувати у променљивој цх. 156 00:07:36,490 --> 00:07:37,941 Прилично једноставно. 157 00:07:37,941 --> 00:07:40,190 Тако да смо гледали само на три функције и већ смо 158 00:07:40,190 --> 00:07:43,070 може да уради нешто веома уредан. 159 00:07:43,070 --> 00:07:46,320 >> Дакле, ако узмемо ту способност добијања карактер 160 00:07:46,320 --> 00:07:48,943 а ми петља То-- па смо наставити да се карактере 161 00:07:48,943 --> 00:07:51,390 из датотеке изнова и изнова и овер-- сада 162 00:07:51,390 --> 00:07:54,500 може прочитати сваки карактер датотеке. 163 00:07:54,500 --> 00:07:58,670 И ако ми штампа сваки лик одмах након што смо прочитали, 164 00:07:58,670 --> 00:08:01,960 сада смо прочитали из фајла и штампан њен садржај на екрану. 165 00:08:01,960 --> 00:08:05,610 Ефикасно смо спојени тај документ на екрану. 166 00:08:05,610 --> 00:08:09,670 И то је оно што Линук Цомманд мачка ради. 167 00:08:09,670 --> 00:08:13,250 >> Ако унесете мачку у име датотеке је, ће одштампати цео садржај 168 00:08:13,250 --> 00:08:15,160 датотеке у прозору терминала. 169 00:08:15,160 --> 00:08:19,010 И тако ова мала петља овде, само три линије кода, 170 00:08:19,010 --> 00:08:23,270 али ефективно дуплира Линук команде мачка. 171 00:08:23,270 --> 00:08:25,210 Дакле, ово би могло синтакса изгледају мало чудно, 172 00:08:25,210 --> 00:08:26,670 али ево шта се овде дешава. 173 00:08:26,670 --> 00:08:31,460 Док ЦХ једнако фгетц, ПТР није једнак ЕОФ-- то је цела залогај, 174 00:08:31,460 --> 00:08:34,669 али хајде да их разбијем само тако да је јасно на синтакси. 175 00:08:34,669 --> 00:08:37,169 Ја сам га консолидовани због простора, 176 00:08:37,169 --> 00:08:39,049 иако је мало синтаксически лукав. 177 00:08:39,049 --> 00:08:41,194 >> Дакле, овај део у зеленом права Сада, шта то ради? 178 00:08:41,194 --> 00:08:42,860 Па, то је само наша фгетц позив, зар не? 179 00:08:42,860 --> 00:08:44,530 Видели смо то раније. 180 00:08:44,530 --> 00:08:49,500 То је добијање један лик из датотеке. 181 00:08:49,500 --> 00:08:53,220 Онда смо упореди Карактером против ЕОФ. 182 00:08:53,220 --> 00:08:57,470 ЕОФ је посебна вредност која је дефинисана у стандардном ио.х, који 183 00:08:57,470 --> 00:08:59,390 је крај датотеке карактер. 184 00:08:59,390 --> 00:09:03,450 Дакле, у основи оно што ће се догодити је ова петља ће прочитати карактер, 185 00:09:03,450 --> 00:09:07,445 упоредите га са ЕОФ је крај датотеке карактер. 186 00:09:07,445 --> 00:09:10,070 Ако се не подударају, тако да немамо стигли до краја датотеке, 187 00:09:10,070 --> 00:09:11,490 ми ћемо тај карактер одштампате. 188 00:09:11,490 --> 00:09:13,740 Онда ћемо се вратити до почетак петље поново. 189 00:09:13,740 --> 00:09:18,310 Добићемо карактер, проверите против ЕОФ, одштампајте га, и тако даље 190 00:09:18,310 --> 00:09:21,094 и тако даље и тако даље, петље кроз тај начин 191 00:09:21,094 --> 00:09:22,760 док смо стигли до краја датотеке. 192 00:09:22,760 --> 00:09:24,593 А онда до те тачке, ми ћемо се штампају 193 00:09:24,593 --> 00:09:26,210 од целокупног садржаја списа. 194 00:09:26,210 --> 00:09:29,450 Дакле, опет смо само видели фопен, фцлосе и фгетц 195 00:09:29,450 --> 00:09:34,950 а већ можемо дуплирати Линук терминала команду. 196 00:09:34,950 --> 00:09:38,850 >> Као што сам рекао на почетку, имали смо фгетц и фпутц, 197 00:09:38,850 --> 00:09:41,860 и фпутц је био пратилац функција фгетц. 198 00:09:41,860 --> 00:09:44,880 И тако, као што можете да замислите, то је еквивалент за писање. 199 00:09:44,880 --> 00:09:49,440 То нам омогућава да написати Један знак у датотеку. 200 00:09:49,440 --> 00:09:53,290 >> Опет, упозорење буде, само као што је било са фгетц, датотека 201 00:09:53,290 --> 00:09:56,660 да пишемо да мора да је био отворен за писање или за додавање. 202 00:09:56,660 --> 00:10:00,820 Ако покушамо и користити фпутц на фајлу да смо отворили за читање, 203 00:10:00,820 --> 00:10:02,760 ћемо патити мало грешка. 204 00:10:02,760 --> 00:10:04,440 Али, позив је прилично једноставна. 205 00:10:04,440 --> 00:10:08,000 фпутц капитал птр2, све то ће да уради је да је 206 00:10:08,000 --> 00:10:12,040 ће написати писмо у А у фајлу 2 дот 207 00:10:12,040 --> 00:10:14,760 Текст, који је био назив од филе да смо отворили и добио 208 00:10:14,760 --> 00:10:17,280 се показивач птр2. 209 00:10:17,280 --> 00:10:20,430 Тако ћемо написати капитал А до Филе 2 дот текста. 210 00:10:20,430 --> 00:10:24,592 И ми ћемо писати узвик указују да поднесе 3 дот 211 00:10:24,592 --> 00:10:27,330 Текст, који је истакао да од птр3. 212 00:10:27,330 --> 00:10:29,730 Дакле, опет, веома једноставно овде. 213 00:10:29,730 --> 00:10:32,727 >> Али сада можемо да урадимо још једну ствар. 214 00:10:32,727 --> 00:10:34,560 Ми имамо овај пример ми смо само иде преко 215 00:10:34,560 --> 00:10:38,950 о могућности да понове мачку Линук Цомманд, онај који исписује 216 00:10:38,950 --> 00:10:40,500 на екран. 217 00:10:40,500 --> 00:10:43,510 Па, сад кад имамо могућност да чита ликове из досијеа 218 00:10:43,510 --> 00:10:46,590 и писати знакове фајлове, зашто не бисмо заменити да 219 00:10:46,590 --> 00:10:50,720 звати принтф са позивом да фпутц. 220 00:10:50,720 --> 00:10:54,090 >> И сада смо дуплирати ЦП, једна основна команда за Линук 221 00:10:54,090 --> 00:10:59,100 да смо разговарали о тако дуго Пре у Линук команде видео. 222 00:10:59,100 --> 00:11:01,070 Ми ефективно сам дуплирани да овдје. 223 00:11:01,070 --> 00:11:04,790 Ми читање карактер и онда смо писања тај лик другом фајлу. 224 00:11:04,790 --> 00:11:07,660 Читање из једне датотеке, писање на други, изнова и изнова 225 00:11:07,660 --> 00:11:11,350 и изнова док не ЕОФ хит. 226 00:11:11,350 --> 00:11:14,250 Морамо до краја на филе покушавамо да копирате из. 227 00:11:14,250 --> 00:11:18,500 И по томе ћемо да напише све од ликова треба да датотеку 228 00:11:18,500 --> 00:11:19,500 да пишемо у. 229 00:11:19,500 --> 00:11:24,270 Дакле, ово је ЦП, Линук копија команду. 230 00:11:24,270 --> 00:11:26,550 >> На самом почетку овај видео сам имао примедби 231 00:11:26,550 --> 00:11:29,840 да ћемо причати мало о тројкама. 232 00:11:29,840 --> 00:11:32,480 Ево конкретно где смо ће говорити о тројкама 233 00:11:32,480 --> 00:11:34,800 Поред поднесе савете. 234 00:11:34,800 --> 00:11:37,870 Дакле, ова функција изгледа некако страшно. 235 00:11:37,870 --> 00:11:39,120 Има неколико параметара. 236 00:11:39,120 --> 00:11:40,430 Много се овде дешава. 237 00:11:40,430 --> 00:11:42,760 Има доста другачији боје и текстови. 238 00:11:42,760 --> 00:11:47,100 Али стварно, то је само генерички верзија фгетц 239 00:11:47,100 --> 00:11:50,110 који нам омогућава да се било количина информација. 240 00:11:50,110 --> 00:11:53,560 То може бити мало неефикасан ако смо узимајући карактере један по један, 241 00:11:53,560 --> 00:11:55,770 итератинг кроз фајл један лик у једном тренутку. 242 00:11:55,770 --> 00:12:00,230 Зар не би било лепше да се 100 у једном тренутку, или 500 у исто време? 243 00:12:00,230 --> 00:12:03,250 >> Па, фреад и њен пратилац функција фврите, што ћемо разговарати о 244 00:12:03,250 --> 00:12:05,490 у секунди, омогућавају нам да управо то. 245 00:12:05,490 --> 00:12:08,480 Можемо прочитати произвољну количину информација из датотеке 246 00:12:08,480 --> 00:12:10,290 а ми га чувате негде привремено. 247 00:12:10,290 --> 00:12:12,980 Уместо да буде у стању да само стане га у једном променљивој, 248 00:12:12,980 --> 00:12:15,790 смо можда ћете морати да га чувате у низу. 249 00:12:15,790 --> 00:12:19,980 И тако, пролазимо у четири аргументи да фреад-- показивач 250 00:12:19,980 --> 00:12:23,940 на локацији где ми да складишти информације, 251 00:12:23,940 --> 00:12:29,180 колики свака јединица информације ће бити, колико јединица информација 252 00:12:29,180 --> 00:12:35,192 желимо да стекну, и од који фајл желимо да их добити. 253 00:12:35,192 --> 00:12:37,150 Вероватно најбоље илуструје са пример. 254 00:12:37,150 --> 00:12:41,640 Рецимо да смо изјављујемо низ од 10 целих бројева. 255 00:12:41,640 --> 00:12:45,080 Управо смо прогласили на стацк произвољно инт арр 10. 256 00:12:45,080 --> 00:12:46,970 Дакле, то је прилично једноставан. 257 00:12:46,970 --> 00:12:51,970 Оно што радимо, иако Сада је фрецалл је да читаш величину инт 258 00:12:51,970 --> 00:12:54,180 10 пута бајтова информација. 259 00:12:54,180 --> 00:12:59,040 Величина инт бића фоур-- то величина цео број у ц. 260 00:12:59,040 --> 00:13:02,790 >> Дакле, оно што ми радимо је да читаш 40 бајта вредне информације 261 00:13:02,790 --> 00:13:05,850 из списа који указује ПТР. 262 00:13:05,850 --> 00:13:08,600 И ми смо чување оне 40 бајта негде 263 00:13:08,600 --> 00:13:12,080 где смо издвојили 40 бајта у вредности меморије. 264 00:13:12,080 --> 00:13:15,970 Срећом, ми смо већ урадили од изјављујући обр, да низ тамо. 265 00:13:15,970 --> 00:13:19,770 Који је способан да холдинга 10-бите четири јединице. 266 00:13:19,770 --> 00:13:22,860 Дакле, укупно, она може држати 40 бајтова вредна информација. 267 00:13:22,860 --> 00:13:26,540 И сада читате 40 бајтова информација из списа, 268 00:13:26,540 --> 00:13:30,330 а ми смо га одложио у Арр. 269 00:13:30,330 --> 00:13:35,470 >> Подсетимо од видео на тројкама да име низа, као што Арр, 270 00:13:35,470 --> 00:13:38,370 је заиста само показивач на свом првом елементу. 271 00:13:38,370 --> 00:13:43,680 Дакле, кад прођемо у Арр тамо, су, у ствари, пролази показивачем. 272 00:13:43,680 --> 00:13:46,120 >> Слично можемо да урадимо ово-- ми не нужно 273 00:13:46,120 --> 00:13:51,200 треба да нам спаси бафер на стек. 274 00:13:51,200 --> 00:13:54,990 Ми такође може динамички додели тампон овако, користећи маллоц. 275 00:13:54,990 --> 00:13:57,340 Запамтите, када смо динамички додели меморију, 276 00:13:57,340 --> 00:14:00,550 ми то штеди на гомила, а не стек. 277 00:14:00,550 --> 00:14:02,110 Али то је и даље тампон. 278 00:14:02,110 --> 00:14:06,810 >> То је још увек, у овом случају, је холдинг 640 бајтова података 279 00:14:06,810 --> 00:14:09,230 јер дупло узима осам бајтова. 280 00:14:09,230 --> 00:14:11,570 А ми тражимо за 80 њих. 281 00:14:11,570 --> 00:14:13,770 Желимо да имамо простора држати 80 у дублу. 282 00:14:13,770 --> 00:14:17,210 Дакле, 80 пута 8 је 640 бајтова информација. 283 00:14:17,210 --> 00:14:21,880 И то је позив на фреад прикупљање 640 бајтова података 284 00:14:21,880 --> 00:14:27,770 из списа који указује ПТР и складиштења сада у арр2. 285 00:14:27,770 --> 00:14:32,770 >> Сада можемо третирати фреад баш као позив на фгетц. 286 00:14:32,770 --> 00:14:37,140 У овом случају, ми само покушавамо да добити један знак из датотеке. 287 00:14:37,140 --> 00:14:40,070 И ми не треба Низ да одржи карактер. 288 00:14:40,070 --> 00:14:43,170 Можемо само да га чувате у карактер променљива. 289 00:14:43,170 --> 00:14:46,390 >> Улов је, међутим, да када имамо само променљиву, 290 00:14:46,390 --> 00:14:50,290 треба да прође у адреса променљиве 291 00:14:50,290 --> 00:14:52,550 јер подсјећају да је Први аргумент да фреад 292 00:14:52,550 --> 00:14:59,210 је показивач на локацији и меморије где желимо да сачувате податке. 293 00:14:59,210 --> 00:15:01,550 Опет, име и презиме низ је показивач. 294 00:15:01,550 --> 00:15:04,200 Дакле, не морамо да радимо амперсанд низ. 295 00:15:04,200 --> 00:15:07,270 Али Ц, карактер Ц овде није низ. 296 00:15:07,270 --> 00:15:08,390 То је само променљива. 297 00:15:08,390 --> 00:15:11,840 И тако треба да донесе Амперсанд ц да укаже 298 00:15:11,840 --> 00:15:15,350 да је то адреса где желимо да сачувате ову једну бајт информација, 299 00:15:15,350 --> 00:15:20,479 овај лик који смо прикупљање од ПТР. 300 00:15:20,479 --> 00:15:22,270 Фврите-- ћу проћи кроз ово мало више 301 00:15:22,270 --> 00:15:25,440 куицкли-- је прилично Тачан еквивалент фреад 302 00:15:25,440 --> 00:15:27,720 осим да је за писање уместо читања, само 303 00:15:27,720 --> 00:15:31,610 као да је отхер-- смо имали отворен и близу, добили карактер, 304 00:15:31,610 --> 00:15:32,530 написати карактер. 305 00:15:32,530 --> 00:15:35,040 Сада је добити произвољно количина информација, 306 00:15:35,040 --> 00:15:37,170 Право произвољна количина информација. 307 00:15:37,170 --> 00:15:39,790 Дакле, као и прије, можемо има низ од 10 целих бројева 308 00:15:39,790 --> 00:15:43,210 где већ имамо подаци који се налазе, можда. 309 00:15:43,210 --> 00:15:46,580 >> Вероватно је неки линија кода да иду између ова два 310 00:15:46,580 --> 00:15:49,990 где сам попунити арр са нешто смислено. 311 00:15:49,990 --> 00:15:51,880 Ја га напунити са 10 различитих целих бројева. 312 00:15:51,880 --> 00:15:54,920 А уместо тога, шта ћу ради се писање од Арр 313 00:15:54,920 --> 00:15:58,600 и прикупљању информација из Арр. 314 00:15:58,600 --> 00:16:02,390 И ја узимам ту информацију и ставио га у датотеку. 315 00:16:02,390 --> 00:16:05,410 >> Дакле, уместо да буде од фајл у бафер, 316 00:16:05,410 --> 00:16:08,790 Сада ћемо од тампон до датотеке. 317 00:16:08,790 --> 00:16:10,580 Дакле, то је само обрнуто. 318 00:16:10,580 --> 00:16:16,680 Дакле, опет, као и раније, можемо такође имају хеап комад меморије 319 00:16:16,680 --> 00:16:19,600 да динамички сам издвојила и прочитао од тога 320 00:16:19,600 --> 00:16:21,570 и пишу да у фајлу. 321 00:16:21,570 --> 00:16:24,900 >> А имамо и једну променљиву способан да држи један бајт 322 00:16:24,900 --> 00:16:27,200 информација, као што је карактер. 323 00:16:27,200 --> 00:16:29,830 Али опет, морамо проћи у адреса променљиве 324 00:16:29,830 --> 00:16:31,840 када ми желимо да читамо из њега. 325 00:16:31,840 --> 00:16:35,280 Тако можемо написати информације наилазимо на тој адреси 326 00:16:35,280 --> 00:16:39,050 у фајл показивач, птр. 327 00:16:39,050 --> 00:16:41,630 >> Постоји много других слици И / О функције 328 00:16:41,630 --> 00:16:44,650 да раде разне ствари осим оне које смо данас говорили. 329 00:16:44,650 --> 00:16:46,450 Неколико оних вам може користити 330 00:16:46,450 --> 00:16:50,840 су фгетс и фпутс, који су еквивалентни 331 00:16:50,840 --> 00:16:56,190 од фгетц и фпутц, али за читање један низ из датотеке. 332 00:16:56,190 --> 00:16:59,020 Уместо једног карактера, она ће прочитати целу стринг. 333 00:16:59,020 --> 00:17:02,940 фпринтф, који у основи омогућава да користите принтф да пишем у датотеку. 334 00:17:02,940 --> 00:17:05,619 Дакле, као што можете да урадите променљива замена користећи 335 00:17:05,619 --> 00:17:09,900 плејсхолдере одсто и и посто д, и тако даље, витх принтф 336 00:17:09,900 --> 00:17:14,690 сте на сличан начин може узмите иф стринг и штампање несто 337 00:17:14,690 --> 00:17:16,800 тако да датотеку. 338 00:17:16,800 --> 00:17:20,720 >> фсеек-- ако имате ДВД плејер је аналогија ја обично користе овде-- 339 00:17:20,720 --> 00:17:23,109 нешто као користећи своје уназад и брзо напред 340 00:17:23,109 --> 00:17:25,819 тастери за кретање по филм. 341 00:17:25,819 --> 00:17:28,369 Слично томе, можете да се крећете датотеке. 342 00:17:28,369 --> 00:17:30,250 Једна од ствари унутар Структура фајлова који 343 00:17:30,250 --> 00:17:34,270 да Ц креира за вас је показатељ где сте у датотеци. 344 00:17:34,270 --> 00:17:36,420 Да ли сте у самом почетком, на бајт нула? 345 00:17:36,420 --> 00:17:39,290 Да ли сте у бајт 100, бите 1,000, и тако даље? 346 00:17:39,290 --> 00:17:44,340 Можете користити фсеек да произвољно кретање да индикатор напред или назад. 347 00:17:44,340 --> 00:17:46,744 >> И фтелл, опет сличан ДВД плејер, 348 00:17:46,744 --> 00:17:49,660 је као мали сат који говори ви колико минута и секунди Иоу 349 00:17:49,660 --> 00:17:52,480 су у одређеном филм. 350 00:17:52,480 --> 00:17:56,990 Слично томе, фтелл ти како каже многи бајтова сте у датотеку. 351 00:17:56,990 --> 00:18:00,210 феоф је другачија верзија откривања да ли сте 352 00:18:00,210 --> 00:18:01,700 стигли до краја датотеке. 353 00:18:01,700 --> 00:18:03,600 И феррор је функција да можете користити 354 00:18:03,600 --> 00:18:06,959 да открије да ли нешто има пошло наопако рад са фајл. 355 00:18:06,959 --> 00:18:08,750 Опет, ово је само гребања површине. 356 00:18:08,750 --> 00:18:12,730 Има још много више датотека је И / О функције у стандардном ио.х. 357 00:18:12,730 --> 00:18:16,620 Али то ће вероватно ти почео да ради са показивачима датотека. 358 00:18:16,620 --> 00:18:17,640 Ја сам Доуг Лојд. 359 00:18:17,640 --> 00:18:19,750 Ово је ЦС50. 360 00:18:19,750 --> 00:18:21,669