1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> SPIKA: Hadi sasa, ni uwezekano kwamba wengi wa mipango yako 3 00:00:07,870 --> 00:00:10,170 kuwa kidogo ephemeral. 4 00:00:10,170 --> 00:00:13,310 Kukimbia mpango kama Mario au tamaa. 5 00:00:13,310 --> 00:00:17,350 Ni haina kitu, ni labda papo user kwa baadhi ya habari, 6 00:00:17,350 --> 00:00:20,400 magazeti baadhi pato kwa screen, lakini kisha wakati mpango wako juu, 7 00:00:20,400 --> 00:00:23,252 kuna kweli hakuna ushahidi pale ilikuwa milele kukimbia katika nafasi ya kwanza. 8 00:00:23,252 --> 00:00:25,960 I mean, hakika, unaweza kuwa na kushoto ni wazi katika dirisha terminal, 9 00:00:25,960 --> 00:00:29,770 lakini kama wewe wazi screen yako, kuna kweli hakuna ushahidi kwamba kuwepo. 10 00:00:29,770 --> 00:00:33,720 Hatuna njia ya kuhifadhi Maelezo ya kuendelea, habari 11 00:00:33,720 --> 00:00:36,890 kwamba ipo baada wetu Mpango huo kusimamishwa mbio, 12 00:00:36,890 --> 00:00:39,241 au tuna si hadi hatua hii. 13 00:00:39,241 --> 00:00:41,490 Kwa bahati nzuri ingawa, c gani kutupatia uwezo 14 00:00:41,490 --> 00:00:44,220 kufanya hivyo kwa kutekeleza kitu kinachoitwa 15 00:00:44,220 --> 00:00:48,330 file, muundo kwamba kimsingi inawakilisha faili kwamba itakuwa mara mbili 16 00:00:48,330 --> 00:00:53,826 click kwenye kompyuta yako, kama wewe ni kutumika graphical mazingira mtumiaji. 17 00:00:53,826 --> 00:00:55,700 Kwa ujumla wakati wa kufanya kazi na c, sisi ni kweli 18 00:00:55,700 --> 00:00:59,965 kwenda kufanya kazi kwa kuyatumia kwa files-- faili stars-- 19 00:00:59,965 --> 00:01:02,090 isipokuwa kwa kidogo wakati sisi majadiliano juu ya wanandoa 20 00:01:02,090 --> 00:01:04,560 ya kazi ambayo kazi na kuyatumia file. 21 00:01:04,560 --> 00:01:08,990 Huna haja ya kuwa na kweli kuchimbwa pia kina ndani ya kuyatumia uelewa 22 00:01:08,990 --> 00:01:09,730 wenyewe. 23 00:01:09,730 --> 00:01:12,870 Kuna kidogo kidogo teeny ambapo sisi majadiliano juu yao, 24 00:01:12,870 --> 00:01:18,090 lakini kwa ujumla faili kuyatumia na kuyatumia, wakati yanayohusiana, 25 00:01:18,090 --> 00:01:20,290 si hasa kitu kimoja. 26 00:01:20,290 --> 00:01:22,440 >> Sasa je, mimi maana wakati Nasema data kuendelea? 27 00:01:22,440 --> 00:01:23,650 Ni nini data kuendelea? 28 00:01:23,650 --> 00:01:25,232 Kwa nini sisi huduma kuhusu hilo? 29 00:01:25,232 --> 00:01:27,190 Kusema, kwa mfano, kwamba wewe ni mbio mpango 30 00:01:27,190 --> 00:01:29,850 au umefanya kuandikwa upya Mpango hiyo ni mchezo, 31 00:01:29,850 --> 00:01:32,960 na unataka kuweka wimbo ya yote ya hatua ya mtumiaji 32 00:01:32,960 --> 00:01:36,620 ili labda kama kitu fulani kitaenda vibaya, unaweza mapitio faili baada ya mchezo. 33 00:01:36,620 --> 00:01:39,970 Hiyo ni nini maana sisi wakati sisi majadiliano juu ya data kuendelea. 34 00:01:39,970 --> 00:01:43,930 >> Katika mwendo wa mbio yako mpango, faili ni kuundwa. 35 00:01:43,930 --> 00:01:45,680 Na wakati mpango wako kimesimama kukimbia, 36 00:01:45,680 --> 00:01:48,689 faili kwamba bado lipo kwenye mfumo wako. 37 00:01:48,689 --> 00:01:50,230 Na tunaweza kuangalia ni na kuchunguza yake. 38 00:01:50,230 --> 00:01:53,670 Na hivyo mpango huo itakuwa kuweka tumemuumba baadhi ya data ya kudumu, 39 00:01:53,670 --> 00:01:57,390 data kuwepo baada ya mpango ina kumaliza mbio. 40 00:01:57,390 --> 00:02:02,320 >> Sasa wote wa kazi hizo kuwa kazi na kujenga files na kufanyia 41 00:02:02,320 --> 00:02:04,940 nao kwa njia mbalimbali wanaishi katika kiwango io.h, 42 00:02:04,940 --> 00:02:08,210 ambayo ni header faili kwamba umefanya uwezekano kuwa pauni 43 00:02:08,210 --> 00:02:10,910 ikiwa ni pamoja na juu ya pretty mengi yote ya programu yako 44 00:02:10,910 --> 00:02:14,130 kwa sababu ina moja ya kazi zaidi na manufaa kwa ajili yetu, 45 00:02:14,130 --> 00:02:16,130 printf, ambayo pia inakuwezesha anaishi katika kiwango io.h. 46 00:02:16,130 --> 00:02:20,400 Hivyo huna haja ya chupa pamoja na mafaili yoyote ya ziada pengine 47 00:02:20,400 --> 00:02:23,540 ili kufanya kazi na kuyatumia file. 48 00:02:23,540 --> 00:02:29,980 >> Sasa kila mmoja faili pointer kazi, au kila faili moja I / O, pembejeo pato 49 00:02:29,980 --> 00:02:33,310 kazi, anapokea kama moja ya vigezo wake au pembejeo 50 00:02:33,310 --> 00:02:35,822 faili pointer isipokuwa kwa moja, fopen, ambayo 51 00:02:35,822 --> 00:02:38,280 ni nini kutumia ili kupata faili pointer katika nafasi ya kwanza. 52 00:02:38,280 --> 00:02:41,010 Lakini baada ya umefanya kufunguliwa faili na kupata kuyatumia faili, 53 00:02:41,010 --> 00:02:43,510 unaweza kisha kupita yao kama hoja kwa kazi mbalimbali 54 00:02:43,510 --> 00:02:46,720 sisi ni kwenda kuzungumza kuhusu leo, pamoja na wengine wengi 55 00:02:46,720 --> 00:02:48,520 ili uweze kufanya kazi na mafaili. 56 00:02:48,520 --> 00:02:50,980 >> Hivyo kuna sita pretty kawaida ndio msingi 57 00:02:50,980 --> 00:02:52,870 kwamba sisi ni kwenda kuzungumza kuhusu leo. 58 00:02:52,870 --> 00:02:57,160 fopen na rafiki yake kazi fclose, fgetc 59 00:02:57,160 --> 00:03:02,670 na rafiki utendaji wake wa kazi fputc, na fread na rafiki yake kazi, 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 Basi hebu kupata haki ndani yake. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- ni nini nini? 63 00:03:07,050 --> 00:03:10,050 Naam, ni kufungua faili na anatoa faili pointer hiyo, 64 00:03:10,050 --> 00:03:14,000 ili uweze kisha kutumia kwamba faili pointer kama hoja 65 00:03:14,000 --> 00:03:16,730 kwa yoyote ya faili wengine I / O kazi. 66 00:03:16,730 --> 00:03:19,100 Jambo muhimu zaidi kukumbuka kwa fopen 67 00:03:19,100 --> 00:03:24,222 ni kwamba baada ya kufunguliwa faili au alitoa wito kama moja hapa, 68 00:03:24,222 --> 00:03:26,930 unahitaji kuangalia kuhakikisha kwamba pointer kwamba got nyuma 69 00:03:26,930 --> 00:03:28,320 si sawa kwa null. 70 00:03:28,320 --> 00:03:31,320 Kama si watched video juu ya kuyatumia, hii inaweza kufanya akili. 71 00:03:31,320 --> 00:03:35,639 Lakini kama wewe kujaribu dereference na pointer null wanakumbuka, 72 00:03:35,639 --> 00:03:38,180 Mpango wako pengine kuteswa segmentation [inaudible]. 73 00:03:38,180 --> 00:03:40,540 Tunataka kuhakikisha kwamba sisi got halali pointer nyuma. 74 00:03:40,540 --> 00:03:43,665 Idadi kubwa ya muda sisi waliopata pointer halali nyuma 75 00:03:43,665 --> 00:03:45,280 na haitakuwa tatizo. 76 00:03:45,280 --> 00:03:46,760 >> Hivyo ni jinsi gani sisi kufanya wito kwa fopen? 77 00:03:46,760 --> 00:03:48,051 Inaonekana pretty kiasi kama hii. 78 00:03:48,051 --> 00:03:52,690 Faili nyota ptr-- ptr kuwa kurefusha maisha jina kwa ajili ya faili pointer fopen 79 00:03:52,690 --> 00:03:57,300 na sisi kupita katika mambo mawili, jina la faili na uendeshaji tunataka kufanya. 80 00:03:57,300 --> 00:04:01,690 Hivyo tuwe na wito kwamba inaonekana kama Haya faili nyota PTR 1 ni sawa na fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 Na uendeshaji nimekuwa waliochaguliwa ni r. 83 00:04:07,020 --> 00:04:08,639 >> Hivyo unafikiri nini r ni hapa? 84 00:04:08,639 --> 00:04:11,180 Je, ni aina ya mambo sisi kuwa na uwezo wa kufanya ili mafaili? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 Hivyo r ni operesheni kwamba sisi kuchagua wakati tunataka kusoma faili. 87 00:04:17,500 --> 00:04:20,260 Hivyo tunataka kimsingi wakati sisi kufanya wito kama huu 88 00:04:20,260 --> 00:04:25,440 kuwa kupata wenyewe faili pointer kiasi kwamba tunaweza kisha kusoma taarifa 89 00:04:25,440 --> 00:04:27,770 kutoka file1.txt. 90 00:04:27,770 --> 00:04:34,190 >> Vile vile, tunaweza kufungua faili 2.txt kwa maandishi na ili tuweze kupita ptr2, 91 00:04:34,190 --> 00:04:38,210 faili pointer nimekuwa kuundwa hapa, kama hoja kwa kazi yoyote ambayo 92 00:04:38,210 --> 00:04:40,080 anaandika habari kwa file. 93 00:04:40,080 --> 00:04:43,767 Na sawa na kuandika, kuna pia ni chaguo append,. 94 00:04:43,767 --> 00:04:45,600 Tofauti kati kuandika na appending 95 00:04:45,600 --> 00:04:50,920 kuwa kwamba wakati wewe kuandika na faili, kama wewe kufanya wito kwa fopen kwa kuandika 96 00:04:50,920 --> 00:04:54,761 na faili kwamba tayari ipo, ni kwenda overwrite faili nzima. 97 00:04:54,761 --> 00:04:56,510 Ni kwenda kuanza mwanzoni kabisa, 98 00:04:56,510 --> 00:04:58,820 kufuta taarifa zote hiyo ni tayari pale. 99 00:04:58,820 --> 00:05:02,210 >> Lakini ikiwa kuufungua kwa appending, itakuwa kwenda hadi mwisho wa faili 100 00:05:02,210 --> 00:05:04,340 kama kuna tayari asilia katika au maelezo ndani yake, 101 00:05:04,340 --> 00:05:06,040 na itakuwa kisha kuanza kuandika kutoka huko. 102 00:05:06,040 --> 00:05:08,570 Hivyo si kupoteza yoyote ya Maelezo umefanya kosa kabla. 103 00:05:08,570 --> 00:05:12,110 Kama unataka kuandika au append aina ya inategemea hali hiyo. 104 00:05:12,110 --> 00:05:16,840 Lakini pengine utasikia kujua nini operesheni haki ni wakati unakuja. 105 00:05:16,840 --> 00:05:18,020 Hivyo hiyo ni fopen. 106 00:05:18,020 --> 00:05:18,930 >> Je kuhusu fclose? 107 00:05:18,930 --> 00:05:21,600 Naam, pretty tu, fclose tu anapokea faili pointer. 108 00:05:21,600 --> 00:05:24,000 Na kama unaweza kutarajia, ni kufunga faili hilo. 109 00:05:24,000 --> 00:05:29,270 Na mara moja tumekuwa imefungwa file, hatuwezi kufanya faili tena I / O kazi, 110 00:05:29,270 --> 00:05:31,420 kusoma au kuandika, juu ya faili hilo. 111 00:05:31,420 --> 00:05:36,444 Tuna upya kufungua faili wakati mwingine ili 112 00:05:36,444 --> 00:05:38,610 kuendelea kufanya kazi na hivyo kwa kutumia I / O kazi. 113 00:05:38,610 --> 00:05:41,520 Njia Hivyo fclose sisi ni kosa kufanya kazi na faili hii. 114 00:05:41,520 --> 00:05:44,690 Na wote tunahitaji kupitisha katika ni jina la faili pointer. 115 00:05:44,690 --> 00:05:50,010 Kadhalika wanandoa slides iliyopita, sisi fopened faili 1 nukta maandishi kwa ajili ya kusoma 116 00:05:50,010 --> 00:05:52,854 na sisi kupewa kwamba faili pointer ptr1. 117 00:05:52,854 --> 00:05:55,020 Sasa tumekuwa aliamua tuko amefanya kusoma kutoka faili hilo. 118 00:05:55,020 --> 00:05:56,561 Hatuna haja ya kufanya lolote zaidi na hayo. 119 00:05:56,561 --> 00:05:58,890 Tunaweza tu fclose ptr1. 120 00:05:58,890 --> 00:06:01,950 Na vile vile, hakuweza sisi fclose wale wengine. 121 00:06:01,950 --> 00:06:02,450 Sawa. 122 00:06:02,450 --> 00:06:03,700 Hivyo hiyo ni kufungua na kufunga. 123 00:06:03,700 --> 00:06:05,780 Hayo ni msingi miwili kuanzia shughuli. 124 00:06:05,780 --> 00:06:08,050 >> Sasa tunataka kweli kufanya baadhi ya mambo ya kuvutia, 125 00:06:08,050 --> 00:06:11,940 na kazi ya kwanza kwamba tutaweza kuona kwamba kufanya hivyo ni fgetc-- 126 00:06:11,940 --> 00:06:14,110 faili kupata tabia. 127 00:06:14,110 --> 00:06:17,350 Hiyo ni nini fgetc ujumla ingekuwa kutafsiri kwa. 128 00:06:17,350 --> 00:06:20,190 Lengo lake katika maisha ni kusoma tabia ijayo, 129 00:06:20,190 --> 00:06:22,079 au kama hii ni yako sana wito wa kwanza fgetc 130 00:06:22,079 --> 00:06:23,870 kwa ajili ya faili fulani, tabia ya kwanza. 131 00:06:23,870 --> 00:06:26,210 Lakini basi baada ya hapo, kupata moja ijayo, 132 00:06:26,210 --> 00:06:31,500 tabia iliyofuata ya faili kwamba, na maduka katika kutofautiana tabia. 133 00:06:31,500 --> 00:06:34,490 Kama tumefanya hapa, char ch sawa na fgetc, 134 00:06:34,490 --> 00:06:36,389 kupita kwa jina la faili pointer. 135 00:06:36,389 --> 00:06:38,180 Tena, ni sana muhimu hapa kukumbuka 136 00:06:38,180 --> 00:06:41,430 kwamba ili kuwa na operesheni hii kufanikiwa, 137 00:06:41,430 --> 00:06:45,690 faili pointer yenyewe must've imefunguliwa kwa ajili ya kusoma. 138 00:06:45,690 --> 00:06:50,589 Hatuwezi kusoma tabia kutoka faili pointer kwamba sisi kufunguliwa kwa maandishi. 139 00:06:50,589 --> 00:06:52,630 Hivyo hiyo ni moja ya mapungufu ya fopen, sawa? 140 00:06:52,630 --> 00:06:55,470 Tuna kuzuia wenyewe kwa kufanya tu 141 00:06:55,470 --> 00:06:57,710 operesheni moja kwa moja faili pointer. 142 00:06:57,710 --> 00:07:00,220 Kama sisi alitaka kusoma na kuandika kutoka faili moja, 143 00:07:00,220 --> 00:07:03,840 tunataka kuwa wazi viwili tofauti kuyatumia faili file-- sawa 144 00:07:03,840 --> 00:07:05,670 moja kwa ajili ya kusoma, moja kwa maandishi. 145 00:07:05,670 --> 00:07:08,400 >> Hivyo tena, sababu tu Mimi kuleta kuwa hadi sasa ni 146 00:07:08,400 --> 00:07:11,920 kwa sababu kama sisi ni kwenda kupiga simu kwa fgetc, kwamba faili pointer must've 147 00:07:11,920 --> 00:07:14,172 imefunguliwa kwa ajili ya kusoma. 148 00:07:14,172 --> 00:07:15,880 Na kisha pretty tu, zote tunahitaji kufanya 149 00:07:15,880 --> 00:07:17,546 ni kupita kwa jina la faili pointer. 150 00:07:17,546 --> 00:07:21,060 Hivyo Char ch sawa na fgetc ptr1. 151 00:07:21,060 --> 00:07:23,200 >> Hiyo inaenda kupata sisi character-- ijayo 152 00:07:23,200 --> 00:07:25,575 au tena, kama hii ni mara ya kwanza wakati tumekuwa alifanya wito huu, 153 00:07:25,575 --> 00:07:29,750 character-- kwanza wa chochote faili zimeelekezwa kwa na ptr1. 154 00:07:29,750 --> 00:07:32,210 Kumbuka kwamba hiyo ilikuwa ya faili 1 nukta asilia. 155 00:07:32,210 --> 00:07:36,490 Ni itabidi kupata tabia ya kwanza ya kwamba na tutaweza kuhifadhi katika ch kutofautiana. 156 00:07:36,490 --> 00:07:37,941 Pretty moja kwa moja. 157 00:07:37,941 --> 00:07:40,190 Hivyo tumekuwa tu inaonekana katika tatu kazi na tayari sisi 158 00:07:40,190 --> 00:07:43,070 wanaweza kufanya kitu pretty nadhifu. 159 00:07:43,070 --> 00:07:46,320 >> Hivyo kama sisi kuchukua uwezo huu ya kupata tabia 160 00:07:46,320 --> 00:07:48,943 na sisi kitanzi it-- hivyo sisi kuendelea kupata wahusika 161 00:07:48,943 --> 00:07:51,390 kutoka faili tena na tena na over-- sasa sisi 162 00:07:51,390 --> 00:07:54,500 Unaweza kusoma kila moja tabia ya faili. 163 00:07:54,500 --> 00:07:58,670 Na kama sisi magazeti kila tabia mara baada ya sisi kusoma, 164 00:07:58,670 --> 00:08:01,960 sisi sasa kusoma kutoka faili na kuchapishwa yaliyomo yake kwa screen. 165 00:08:01,960 --> 00:08:05,610 Tumekuwa ufanisi concatenated kwamba faili kwenye screen. 166 00:08:05,610 --> 00:08:09,670 Na kwamba ni nini Linux amri paka gani. 167 00:08:09,670 --> 00:08:13,250 >> Kama aina paka katika jina la faili, ni magazeti nje yaliyomo yote 168 00:08:13,250 --> 00:08:15,160 ya faili katika terminal dirisha yako. 169 00:08:15,160 --> 00:08:19,010 Na hivyo hii kitanzi kidogo hapa, mistari mitatu tu ya maadili, 170 00:08:19,010 --> 00:08:23,270 lakini kwa ufanisi marudio Linux amri paka. 171 00:08:23,270 --> 00:08:25,210 Hivyo syntax hii huenda kuangalia kidogo weird, 172 00:08:25,210 --> 00:08:26,670 lakini hapa ni nini kinatokea hapa. 173 00:08:26,670 --> 00:08:31,460 Wakati ch sawa na fgetc, PTR si sawa na EOF-- ni Mouthful nzima, 174 00:08:31,460 --> 00:08:34,669 lakini hebu kuvunja chini tu hivyo ni wazi juu ya syntax. 175 00:08:34,669 --> 00:08:37,169 Nimekuwa kuimarishwa ni kwa ajili ya nafasi, 176 00:08:37,169 --> 00:08:39,049 ingawa ni kidogo syntactically gumu. 177 00:08:39,049 --> 00:08:41,194 >> Hivyo sehemu hii katika kijani haki sasa, nini ni kufanya? 178 00:08:41,194 --> 00:08:42,860 Naam, hiyo ni fgetc yetu wito, sawa? 179 00:08:42,860 --> 00:08:44,530 Tumeona kwamba kabla. 180 00:08:44,530 --> 00:08:49,500 Ni kupata moja tabia kutoka faili. 181 00:08:49,500 --> 00:08:53,220 Kisha sisi kulinganisha kwamba tabia dhidi EOF. 182 00:08:53,220 --> 00:08:57,470 EOF ni thamani maalum kwamba inavyoelezwa katika kiwango io.h, ambayo 183 00:08:57,470 --> 00:08:59,390 Huu ndio mwisho wa faili tabia. 184 00:08:59,390 --> 00:09:03,450 Hivyo kimsingi nini kitatokea ni kitanzi hii itakuwa kusoma tabia, 185 00:09:03,450 --> 00:09:07,445 kulinganisha kwa EOF, mwisho wa faili tabia. 186 00:09:07,445 --> 00:09:10,070 Kama hawana mechi, hivyo tuna si kufikiwa mwisho wa file, 187 00:09:10,070 --> 00:09:11,490 tutaweza magazeti kwamba tabia nje. 188 00:09:11,490 --> 00:09:13,740 Kisha tutaweza kurudi mwanzo wa kitanzi tena. 189 00:09:13,740 --> 00:09:18,310 Tutaweza kupata tabia, kuangalia dhidi EOF, magazeti ya nje, na kadhalika 190 00:09:18,310 --> 00:09:21,094 na kadhalika na kadhalika, looping kupitia kwa njia ambayo 191 00:09:21,094 --> 00:09:22,760 mpaka tumekuwa kufikiwa mwisho wa faili. 192 00:09:22,760 --> 00:09:24,593 Na kisha kwa hatua hiyo, tutakuwa na kuchapishwa 193 00:09:24,593 --> 00:09:26,210 nje yaliyomo yote ya faili. 194 00:09:26,210 --> 00:09:29,450 Hivyo tena, tumekuwa tu kuonekana fopen, fclose, na fgetc 195 00:09:29,450 --> 00:09:34,950 na tayari tunaweza kurudia Linux wastaafu amri. 196 00:09:34,950 --> 00:09:38,850 >> Kama nilivyosema mwanzoni, tulikuwa na fgetc na fputc, 197 00:09:38,850 --> 00:09:41,860 na fputc alikuwa rafiki kazi ya fgetc. 198 00:09:41,860 --> 00:09:44,880 Na hivyo, kama unaweza kufikiria, ni kuandika sawa. 199 00:09:44,880 --> 00:09:49,440 Ni inaruhusu sisi kuandika tabia moja na faili. 200 00:09:49,440 --> 00:09:53,290 >> Tena, caveat kuwa, tu kama ilivyokuwa kwa fgetc, faili 201 00:09:53,290 --> 00:09:56,660 kwamba sisi ni kuandika kwa must've wamekuwa kufunguliwa kwa maandishi au kwa appending. 202 00:09:56,660 --> 00:10:00,820 Kama sisi kujaribu na kutumia fputc kwenye faili la kwamba tumekuwa kufunguliwa kwa ajili ya kusoma, 203 00:10:00,820 --> 00:10:02,760 tunakwenda kuteseka kidogo ya makosa. 204 00:10:02,760 --> 00:10:04,440 Lakini wito ni pretty rahisi. 205 00:10:04,440 --> 00:10:08,000 mji mkuu fputc ptr2, kila hiyo ni kwenda kufanya ni ni 206 00:10:08,000 --> 00:10:12,040 kwenda kuandika barua ndani ya kwenye faili 2 nukta 207 00:10:12,040 --> 00:10:14,760 maandishi, ambayo ilikuwa jina ya faili kwamba sisi kufunguliwa na kupewa 208 00:10:14,760 --> 00:10:17,280 pointer ptr2. 209 00:10:17,280 --> 00:10:20,430 Hivyo sisi ni kwenda kuandika A mji mkuu na faili 2 nukta asilia. 210 00:10:20,430 --> 00:10:24,592 Na tutaweza kuandika mshangao uhakika na faili 3 nukta 211 00:10:24,592 --> 00:10:27,330 maandishi, ambayo ilikuwa alisema kwa ptr3. 212 00:10:27,330 --> 00:10:29,730 Hivyo tena, pretty moja kwa moja hapa. 213 00:10:29,730 --> 00:10:32,727 >> Lakini sasa tunaweza kufanya kitu kingine. 214 00:10:32,727 --> 00:10:34,560 Tuna mfano huu tulikuwa tu kwenda juu 215 00:10:34,560 --> 00:10:38,950 juu ya kuwa na uwezo wa kuiga paka Linux amri, moja kwamba Prints nje 216 00:10:38,950 --> 00:10:40,500 screen. 217 00:10:40,500 --> 00:10:43,510 Naam, sasa kwamba tuna uwezo kusoma wahusika kutoka mafaili 218 00:10:43,510 --> 00:10:46,590 na kuandika herufi ya mafaili, kwa nini sio sisi tu mbadala kwamba 219 00:10:46,590 --> 00:10:50,720 wito kwa printf kwa mwito wa fputc. 220 00:10:50,720 --> 00:10:54,090 >> Na sasa tumekuwa kurudiwa cp, msingi sana Linux amri 221 00:10:54,090 --> 00:10:59,100 kwamba kuongelea njia ya muda mrefu iliyopita katika Linux amri video. 222 00:10:59,100 --> 00:11:01,070 Tumekuwa ufanisi duplicated kwamba haki hapa. 223 00:11:01,070 --> 00:11:04,790 Sisi ni kusoma tabia na kisha tuko kuandika kwamba tabia ya faili jingine. 224 00:11:04,790 --> 00:11:07,660 Kusoma kutoka faili moja, kuandika hadi nyingine, tena na tena 225 00:11:07,660 --> 00:11:11,350 na tena mpaka sisi kugonga EOF. 226 00:11:11,350 --> 00:11:14,250 Sisi tumepewa mwishoni mwa faili sisi ni kujaribu nakala kutoka. 227 00:11:14,250 --> 00:11:18,500 Na kwa kuwa tutaweza wameandika zote ya wahusika tunahitaji faili 228 00:11:18,500 --> 00:11:19,500 kwamba sisi ni kuandika kwa. 229 00:11:19,500 --> 00:11:24,270 Hivyo hii ni cp, Linux na nakala ya amri. 230 00:11:24,270 --> 00:11:26,550 >> Mwanzoni kabisa mwa video hii, nilikuwa na caveat 231 00:11:26,550 --> 00:11:29,840 kwamba tunataka kuzungumza kidogo kuhusu kuyatumia. 232 00:11:29,840 --> 00:11:32,480 Hapa ni hasa ambapo tuko kwenda kuzungumza kuhusu kuyatumia 233 00:11:32,480 --> 00:11:34,800 pamoja na faili kuyatumia. 234 00:11:34,800 --> 00:11:37,870 Hivyo kazi hii inaonekana aina ya inatisha. 235 00:11:37,870 --> 00:11:39,120 Ni got vigezo kadhaa. 236 00:11:39,120 --> 00:11:40,430 Kuna mengi kinachoendelea hapa. 237 00:11:40,430 --> 00:11:42,760 Kuna mengi ya tofauti rangi na maandiko. 238 00:11:42,760 --> 00:11:47,100 Lakini kwa kweli, ni tu toleo la kurefusha maisha ya fgetc 239 00:11:47,100 --> 00:11:50,110 ambayo inaruhusu sisi kupata yoyote Kiasi cha habari. 240 00:11:50,110 --> 00:11:53,560 Ni inaweza kuwa kidogo ufanisi kama sisi ni kupata wahusika mmoja kwa wakati, 241 00:11:53,560 --> 00:11:55,770 iterating kupitia faili tabia moja kwa wakati mmoja. 242 00:11:55,770 --> 00:12:00,230 Je, si ni kuwa nicer kupata 100 kwa wakati mmoja au 500 kwa wakati mmoja? 243 00:12:00,230 --> 00:12:03,250 >> Naam, fread na rafiki yake kazi fwrite, ambayo tutaweza majadiliano juu ya 244 00:12:03,250 --> 00:12:05,490 katika pili, kuruhusu sisi kufanya tu. 245 00:12:05,490 --> 00:12:08,480 Tunaweza kusoma kiasi holela cha habari kutoka faili 246 00:12:08,480 --> 00:12:10,290 na sisi kuhifadhi mahali fulani kwa muda. 247 00:12:10,290 --> 00:12:12,980 Badala ya kuwa na uwezo wa tu fit katika kutofautiana moja, 248 00:12:12,980 --> 00:12:15,790 tupate haja ya kuhifadhi katika safu. 249 00:12:15,790 --> 00:12:19,980 Na hivyo, sisi kupita katika nne hoja kwa fread-- pointer 250 00:12:19,980 --> 00:12:23,940 kwa eneo ambapo tuko kwenda kuhifadhi habari, 251 00:12:23,940 --> 00:12:29,180 jinsi kubwa kila kitengo cha habari itakuwa, vitengo ngapi wa habari 252 00:12:29,180 --> 00:12:35,192 tunataka kupata, na kutoka ambayo faili tunataka kupata yao. 253 00:12:35,192 --> 00:12:37,150 Pengine ni bora mfano kwa mfano hapa. 254 00:12:37,150 --> 00:12:41,640 Basi hebu kusema kwamba sisi kutangaza safu ya 10 integers. 255 00:12:41,640 --> 00:12:45,080 Tumekuwa tu alitangaza juu ya stack kiholela int arr 10. 256 00:12:45,080 --> 00:12:46,970 Hivyo hiyo ni pretty moja kwa moja. 257 00:12:46,970 --> 00:12:51,970 Sasa nini sisi ni kufanya ingawa ni frecall ni sisi ni kusoma ukubwa wa int 258 00:12:51,970 --> 00:12:54,180 mara 10 ka wa habari. 259 00:12:54,180 --> 00:12:59,040 Ukubwa wa int kuwa four-- hiyo ni ukubwa wa integer katika c. 260 00:12:59,040 --> 00:13:02,790 >> Hivyo nini sisi ni kufanya ni sisi ni kusoma 40 ka thamani ya habari 261 00:13:02,790 --> 00:13:05,850 kutoka faili alisema kwa PTR. 262 00:13:05,850 --> 00:13:08,600 Na sisi ni hifadhi wale 40 ka mahali fulani 263 00:13:08,600 --> 00:13:12,080 ambapo tumetenga 40 ka thamani ya kumbukumbu. 264 00:13:12,080 --> 00:13:15,970 Kwa bahati nzuri, tumekuwa tayari amefanya hivyo kwa kutangaza arr, kwamba safu haki pale. 265 00:13:15,970 --> 00:13:19,770 Kuwa ni uwezo wa kufanya 10 manne-Byte vipande. 266 00:13:19,770 --> 00:13:22,860 Hivyo kwa jumla, inaweza kuendesha 40 ka thamani ya habari. 267 00:13:22,860 --> 00:13:26,540 Na sisi sasa ni kusoma ka 40 cha habari kutoka faili, 268 00:13:26,540 --> 00:13:30,330 na sisi ni hifadhi hiyo katika arr. 269 00:13:30,330 --> 00:13:35,470 >> Kumbuka kutoka video kwenye kuyatumia kwamba jina la safu, kama vile arr, 270 00:13:35,470 --> 00:13:38,370 ni kweli tu pointer kwa kipengele yake ya kwanza. 271 00:13:38,370 --> 00:13:43,680 Hivyo wakati sisi kupita katika arr huko, sisi ni, kwa kweli, kupita katika pointer. 272 00:13:43,680 --> 00:13:46,120 >> Vile vile tunaweza kufanya Haya sisi si lazima 273 00:13:46,120 --> 00:13:51,200 haja ya kuokoa buffer yetu juu ya stack. 274 00:13:51,200 --> 00:13:54,990 Tunaweza pia dynamically kutenga a buffer kama hii, kwa kutumia malloc. 275 00:13:54,990 --> 00:13:57,340 Kumbuka, wakati sisi dynamically kutenga kumbukumbu, 276 00:13:57,340 --> 00:14:00,550 sisi ni kuokoa juu ya chungu, si stack. 277 00:14:00,550 --> 00:14:02,110 Lakini bado ni buffer. 278 00:14:02,110 --> 00:14:06,810 >> Bado, katika kesi hii, ni kuikopesha 640 ka wa habari 279 00:14:06,810 --> 00:14:09,230 kwa sababu mara mbili inachukua hadi ka nane. 280 00:14:09,230 --> 00:14:11,570 Na sisi ni kuuliza kwa 80 miongoni mwao. 281 00:14:11,570 --> 00:14:13,770 Tunataka kuwa na nafasi kushikilia 80 mara mbili. 282 00:14:13,770 --> 00:14:17,210 Hivyo mara 80 8 ni 640 ka habari. 283 00:14:17,210 --> 00:14:21,880 Na kwamba wito kwa fread ni kukusanya 640 ka wa habari 284 00:14:21,880 --> 00:14:27,770 kutoka faili alisema kwa ptr na hifadhi hiyo sasa katika arr2. 285 00:14:27,770 --> 00:14:32,770 >> Sasa tunaweza pia kutibu fread kama wito kwa fgetc. 286 00:14:32,770 --> 00:14:37,140 Katika kesi hiyo, sisi ni kujaribu tu kupata tabia moja kutoka faili. 287 00:14:37,140 --> 00:14:40,070 Na hatuna haja safu kushikilia tabia. 288 00:14:40,070 --> 00:14:43,170 Tunaweza tu kuhifadhi katika tabia kutofautiana. 289 00:14:43,170 --> 00:14:46,390 >> Kukamata, ingawa, ni kwamba wakati sisi tu kutofautiana, 290 00:14:46,390 --> 00:14:50,290 tunahitaji kupitisha katika pepe ya kwamba kutofautiana 291 00:14:50,290 --> 00:14:52,550 kwa sababu wanakumbuka kwamba kwanza hoja kwa fread 292 00:14:52,550 --> 00:14:59,210 ni pointer eneo na kumbukumbu ambapo tunataka kuhifadhi habari. 293 00:14:59,210 --> 00:15:01,550 Tena, jina la safu ni pointer. 294 00:15:01,550 --> 00:15:04,200 Hivyo hatuna haja ya kufanya ampersand safu. 295 00:15:04,200 --> 00:15:07,270 Lakini c, tabia c hapa, ni si safu. 296 00:15:07,270 --> 00:15:08,390 Ni tu kutofautiana. 297 00:15:08,390 --> 00:15:11,840 Na hivyo tunahitaji kupitisha ampersand c kuonyesha 298 00:15:11,840 --> 00:15:15,350 kwamba hiyo ni anwani ambapo tunataka kuhifadhi Byte hii moja wa habari, 299 00:15:15,350 --> 00:15:20,479 tabia hii moja kwamba sisi ni kukusanya kutoka PTR. 300 00:15:20,479 --> 00:15:22,270 Fwrite-- nitakwenda kupitia hii kidogo zaidi 301 00:15:22,270 --> 00:15:25,440 quickly-- ni kiasi pretty halisi sawa na fread 302 00:15:25,440 --> 00:15:27,720 isipokuwa ni kwa ajili ya kuandika badala ya kusoma, tu 303 00:15:27,720 --> 00:15:31,610 kama other-- tulikuwa na wazi na karibu, kupata tabia, 304 00:15:31,610 --> 00:15:32,530 kuandika tabia. 305 00:15:32,530 --> 00:15:35,040 Sasa ni kupata holela Kiasi cha habari, 306 00:15:35,040 --> 00:15:37,170 haki holela kiasi cha habari. 307 00:15:37,170 --> 00:15:39,790 Hivyo tu kama kabla, tunaweza safu ya integers 10 308 00:15:39,790 --> 00:15:43,210 ambapo tayari tuna habari kuhifadhiwa, labda. 309 00:15:43,210 --> 00:15:46,580 >> Ilikuwa pengine baadhi mstari wa kanuni kuwa anatakiwa kwenda kati ya hizi mbili 310 00:15:46,580 --> 00:15:49,990 ambapo mimi kujaza ARR na kitu ya maana. 311 00:15:49,990 --> 00:15:51,880 Mimi kujaza kwa 10 integers tofauti. 312 00:15:51,880 --> 00:15:54,920 Na badala yake, ni nini mimi nina kufanya ni kuandika kutoka arr 313 00:15:54,920 --> 00:15:58,600 na kukusanya taarifa kutoka arr. 314 00:15:58,600 --> 00:16:02,390 Na mimi nina kuchukua habari ambazo na kuweka katika faili. 315 00:16:02,390 --> 00:16:05,410 >> Hivyo badala ya kuwa kutokana na faili buffer, 316 00:16:05,410 --> 00:16:08,790 tuko sasa kwenda kutoka buffer na faili. 317 00:16:08,790 --> 00:16:10,580 Hivyo ni tu kinyume. 318 00:16:10,580 --> 00:16:16,680 Hivyo tena, tu kama kabla, tunaweza pia kuwa lundo chunk ya kumbukumbu 319 00:16:16,680 --> 00:16:19,600 kwamba tumekuwa dynamically zilizotengwa na kusoma kutoka kuwa 320 00:16:19,600 --> 00:16:21,570 na kuandika kuwa na faili. 321 00:16:21,570 --> 00:16:24,900 >> Na sisi pia kuwa kutofautiana moja uwezo wa kufanya byte moja 322 00:16:24,900 --> 00:16:27,200 ya habari, kama vile tabia. 323 00:16:27,200 --> 00:16:29,830 Lakini tena, tunahitaji kupitisha katika pepe ya kwamba kutofautiana 324 00:16:29,830 --> 00:16:31,840 wakati tunataka kusoma kutoka humo. 325 00:16:31,840 --> 00:16:35,280 Ili tuweze kuandika maelezo tunaona katika anwani hiyo 326 00:16:35,280 --> 00:16:39,050 na faili pointer, ptr. 327 00:16:39,050 --> 00:16:41,630 >> Kuna kura ya wengine faili kubwa I / O kazi 328 00:16:41,630 --> 00:16:44,650 kwamba kufanya mambo mbalimbali badala ndio tumekuwa aliyesema kuhusu leo. 329 00:16:44,650 --> 00:16:46,450 Michache ya watoto unaweza kupata manufaa 330 00:16:46,450 --> 00:16:50,840 ni fgets na fputs, ambayo ni sawa 331 00:16:50,840 --> 00:16:56,190 ya fgetc na fputc lakini kwa kusoma kamba moja kutoka faili. 332 00:16:56,190 --> 00:16:59,020 Badala ya tabia moja, itakuwa kusoma kamba nzima. 333 00:16:59,020 --> 00:17:02,940 fprintf, ambayo kimsingi inaruhusu kutumia printf kuandika na faili. 334 00:17:02,940 --> 00:17:05,619 Hivyo tu kama unaweza kufanya kutofautiana badala ya kutumia 335 00:17:05,619 --> 00:17:09,900 asilimia placeholders i na asilimia d, na kadhalika, na printf 336 00:17:09,900 --> 00:17:14,690 unaweza vile vile kuchukua printf kamba na magazeti kitu 337 00:17:14,690 --> 00:17:16,800 kama kwamba kwa file. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- kama una DVD player ni mfano mimi matumizi ya kawaida here-- 339 00:17:20,720 --> 00:17:23,109 ni aina ya kama kwa kutumia yako rewind na ya haraka mbele 340 00:17:23,109 --> 00:17:25,819 vifungo kuweza kuzunguka sinema. 341 00:17:25,819 --> 00:17:28,369 Vile vile, unaweza kuzunguka faili. 342 00:17:28,369 --> 00:17:30,250 Moja ya mambo ndani ya kwamba muundo faili 343 00:17:30,250 --> 00:17:34,270 kuwa c inajenga kwa ajili yenu ni kiashiria ya ambapo wewe ni katika faili. 344 00:17:34,270 --> 00:17:36,420 Ni wewe saa sana mwanzo, katika Byte sifuri? 345 00:17:36,420 --> 00:17:39,290 Ni wewe saa Byte 100, Byte 1000, na kadhalika? 346 00:17:39,290 --> 00:17:44,340 Unaweza kutumia fseek kiholela kusonga kuwa kiashiria mbele au nyuma. 347 00:17:44,340 --> 00:17:46,744 >> Na ftell, tena sawa na mchezaji DVD, 348 00:17:46,744 --> 00:17:49,660 Ni kama saa kidogo kwamba anaelezea jinsi dakika na sekunde wewe wengi 349 00:17:49,660 --> 00:17:52,480 ni katika sinema fulani. 350 00:17:52,480 --> 00:17:56,990 Vile vile, ftell anaelezea jinsi wengi ka wewe ni katika faili. 351 00:17:56,990 --> 00:18:00,210 feof ni toleo la tofauti ya kuchunguza kama wameweza 352 00:18:00,210 --> 00:18:01,700 kufikiwa mwisho wa faili. 353 00:18:01,700 --> 00:18:03,600 Na ferror ni kazi kwamba unaweza kutumia 354 00:18:03,600 --> 00:18:06,959 kuchunguza kama kitu ina gone kazi kibaya na faili. 355 00:18:06,959 --> 00:18:08,750 Tena, hii ni scratching ya uso. 356 00:18:08,750 --> 00:18:12,730 Bado kuna mengi zaidi ya faili I / O kazi katika io.h. kiwango 357 00:18:12,730 --> 00:18:16,620 Lakini hii pengine kupata wewe kuanza kufanya kazi na kuyatumia file. 358 00:18:16,620 --> 00:18:17,640 Mimi nina Doug Lloyd. 359 00:18:17,640 --> 00:18:19,750 Hii ni cs50. 360 00:18:19,750 --> 00:18:21,669