1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> SIARADWR: Hyd yn hyn, mae'n debygol bod y rhan fwyaf o'ch rhaglenni 3 00:00:07,870 --> 00:00:10,170 wedi bod yn dipyn byrhoedlog. 4 00:00:10,170 --> 00:00:13,310 Rydych yn rhedeg rhaglen fel Mario neu Greedy. 5 00:00:13,310 --> 00:00:17,350 Mae'n gwneud rhywbeth, mae'n efallai awgrymiadau y defnyddiwr ar gyfer rhywfaint o wybodaeth, 6 00:00:17,350 --> 00:00:20,400 argraffu rhywfaint o allbwn i'r sgrin, ond wedyn pan fydd eich rhaglen drosodd, 7 00:00:20,400 --> 00:00:23,252 does 'n sylweddol dim tystiolaeth yno cafodd ei redeg erioed yn y lle cyntaf. 8 00:00:23,252 --> 00:00:25,960 Hynny yw, yn sicr, efallai y byddwch wedi gadael yn agor yn y ffenestr terfynell, 9 00:00:25,960 --> 00:00:29,770 ond os ydych yn glir eich sgrin, mae ' 'n sylweddol dim tystiolaeth ei fod yn bodoli. 10 00:00:29,770 --> 00:00:33,720 Nid oes gennym ffordd o storio gwybodaeth gyson, gwybodaeth 11 00:00:33,720 --> 00:00:36,890 sy'n bodoli ar ôl ein rhaglen wedi rhoi'r gorau i redeg, 12 00:00:36,890 --> 00:00:39,241 neu os nad ydym wedi hyd at y pwynt hwn. 13 00:00:39,241 --> 00:00:41,490 Yn ffodus, fodd bynnag, c yn ei wneud rhoi i ni gyda'r gallu 14 00:00:41,490 --> 00:00:44,220 i wneud hyn drwy weithredu rhywbeth o'r enw 15 00:00:44,220 --> 00:00:48,330 ffeil, strwythur sy'n bôn yn cynrychioli ffeil y byddech yn dyblu 16 00:00:48,330 --> 00:00:53,826 cliciwch ar eich cyfrifiadur, os ydych chi'n Defnyddir i amgylchedd defnyddwyr graffigol. 17 00:00:53,826 --> 00:00:55,700 Yn gyffredinol, wrth weithio gyda c, rydym yn mewn gwirionedd 18 00:00:55,700 --> 00:00:59,965 mynd i fod yn gweithio gyda awgrymiadau i files-- ffeil stars-- 19 00:00:59,965 --> 00:01:02,090 ac eithrio ar gyfer ychydig pan fyddwn yn sôn am gwpl 20 00:01:02,090 --> 00:01:04,560 o'r swyddogaethau y gweithio gyda awgrymiadau ffeil. 21 00:01:04,560 --> 00:01:08,990 Nid oes angen i chi fod wedi cloddio mewn gwirionedd yn rhy ddwfn i mewn dealltwriaeth awgrymiadau 22 00:01:08,990 --> 00:01:09,730 eu hunain. 23 00:01:09,730 --> 00:01:12,870 Mae ychydig teeny lle y byddwn yn siarad amdanynt, 24 00:01:12,870 --> 00:01:18,090 ond yn gyffredinol yn ffeilio awgrymiadau a awgrymiadau, tra rhyngberthyn, 25 00:01:18,090 --> 00:01:20,290 Nid yn union yr un peth. 26 00:01:20,290 --> 00:01:22,440 >> Nawr beth ddylwn i ei olygu pan Rwy'n dweud data parhaus? 27 00:01:22,440 --> 00:01:23,650 Beth yw data parhaus? 28 00:01:23,650 --> 00:01:25,232 Pam rydym yn poeni am y peth? 29 00:01:25,232 --> 00:01:27,190 Dweud, er enghraifft, bod ydych yn rhedeg rhaglen 30 00:01:27,190 --> 00:01:29,850 neu os ydych wedi ailysgrifennu yn rhaglen sy'n gêm, 31 00:01:29,850 --> 00:01:32,960 ac rydych am i gadw golwg yr holl symudiadau y defnyddiwr 32 00:01:32,960 --> 00:01:36,620 felly efallai os bydd rhywbeth yn mynd o'i le, gallwch adolygu y ffeil ar ôl y gêm. 33 00:01:36,620 --> 00:01:39,970 Dyna beth a olygwn pan fyddwn yn siarad am ddata cyson. 34 00:01:39,970 --> 00:01:43,930 >> Yn ystod rhedeg eich rhaglen, mae ffeil yn cael ei greu. 35 00:01:43,930 --> 00:01:45,680 A phan fydd eich rhaglen wedi rhoi'r gorau i redeg, 36 00:01:45,680 --> 00:01:48,689 bod ffeil yn dal i fodoli ar eich system. 37 00:01:48,689 --> 00:01:50,230 A gallwn edrych arno ac yn archwilio. 38 00:01:50,230 --> 00:01:53,670 Ac felly y byddai rhaglen yn cael ei gosod i wedi creu rhywfaint o ddata parhaus, 39 00:01:53,670 --> 00:01:57,390 data bodoli ar ôl y rhaglen wedi gorffen rhedeg. 40 00:01:57,390 --> 00:02:02,320 >> Nawr holl swyddogaethau hyn sy'n gweithio gyda chreu ffeiliau a thrin 41 00:02:02,320 --> 00:02:04,940 nhw mewn nifer o ffyrdd yn byw mewn io.h safonol, 42 00:02:04,940 --> 00:02:08,210 sydd yn ffeil pennawd sy'n ydych wedi bod bunt yn debygol 43 00:02:08,210 --> 00:02:10,910 gan gynnwys ar ben 'n bert llawer eich holl raglenni 44 00:02:10,910 --> 00:02:14,130 oherwydd ei fod yn cynnwys un o'r y rhan fwyaf o swyddogaethau defnyddiol i ni, 45 00:02:14,130 --> 00:02:16,130 printf, sydd hefyd yn gadael yn byw yn io.h. safonol 46 00:02:16,130 --> 00:02:20,400 Felly nid oes angen i chi punt cynnwys unrhyw ffeiliau ychwanegol yn ôl pob tebyg 47 00:02:20,400 --> 00:02:23,540 er mwyn gweithio gyda awgrymiadau ffeil. 48 00:02:23,540 --> 00:02:29,980 >> Bellach mae pob swyddogaeth pwyntydd ffeil unigol, neu bob un ffeil I / O, allbwn mewnbwn 49 00:02:29,980 --> 00:02:33,310 swyddogaeth, yn derbyn fel un o'i baramedrau neu fewnbynnau 50 00:02:33,310 --> 00:02:35,822 yn pointer-- ffeil eithrio ar gyfer un, fopen, a oedd yn 51 00:02:35,822 --> 00:02:38,280 yw'r hyn rydych yn ei ddefnyddio i gael y ffeil pwyntydd yn y lle cyntaf. 52 00:02:38,280 --> 00:02:41,010 Ond ar ôl i chi agor y ffeilio a byddwch yn cael awgrymiadau ffeil, 53 00:02:41,010 --> 00:02:43,510 gallwch wedyn eu pasio fel dadleuon â gwahanol swyddogaethau'r 54 00:02:43,510 --> 00:02:46,720 rydym yn mynd i siarad am heddiw, yn ogystal â llawer o rai eraill 55 00:02:46,720 --> 00:02:48,520 fel y gallwch weithio gyda ffeiliau. 56 00:02:48,520 --> 00:02:50,980 >> Felly mae chwe 'n bert rhai sylfaenol cyffredin 57 00:02:50,980 --> 00:02:52,870 ein bod ni'n mynd i siarad am heddiw. 58 00:02:52,870 --> 00:02:57,160 fopen ac mae ei gydymaith fclose swyddogaeth, fgetc 59 00:02:57,160 --> 00:03:02,670 ac mae ei fputc swyddogaeth cydymaith, a fread a'i swyddogaeth gydymaith, 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 Felly gadewch i ni fynd i'r dde i mewn iddo. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- beth mae'n ei wneud? 63 00:03:07,050 --> 00:03:10,050 Wel, mae'n agor ffeil ac mae'n yn rhoi pwyntydd ffeil rydych iddo, 64 00:03:10,050 --> 00:03:14,000 fel y gallwch wedyn ddefnyddio'r ffeil pwyntydd fel dadl 65 00:03:14,000 --> 00:03:16,730 i unrhyw un o'r ffeiliau eraill I / O swyddogaethau. 66 00:03:16,730 --> 00:03:19,100 Y peth mwyaf pwysig i'w gofio gyda fopen 67 00:03:19,100 --> 00:03:24,222 yw bod ar ôl i chi agor y ffeil neu gwneud galwad fel yr un yma, 68 00:03:24,222 --> 00:03:26,930 angen i chi wirio i wneud yn siŵr bod y pwyntydd eich bod yn mynd yn ôl 69 00:03:26,930 --> 00:03:28,320 Nid yn hafal i null. 70 00:03:28,320 --> 00:03:31,320 Os nad ydych wedi gwylio'r fideo ar awgrymiadau, efallai na fydd hyn yn gwneud synnwyr. 71 00:03:31,320 --> 00:03:35,639 Ond os ydych yn ceisio dereference adalw pwyntydd null, 72 00:03:35,639 --> 00:03:38,180 Bydd eich rhaglen yn ôl pob tebyg yn dioddef segmentiad [Anghlywadwy]. 73 00:03:38,180 --> 00:03:40,540 Rydym am wneud yn siŵr ein bod yn got a cefn pwyntydd dilys. 74 00:03:40,540 --> 00:03:43,665 Mae'r mwyafrif helaeth o'r amser byddwn yn wedi gotten pwyntydd dilys yn ôl 75 00:03:43,665 --> 00:03:45,280 ac ni fydd yn broblem. 76 00:03:45,280 --> 00:03:46,760 >> Felly sut rydym yn gwneud galwad i fopen? 77 00:03:46,760 --> 00:03:48,051 Mae'n edrych yn 'n bert lawer fel hyn. 78 00:03:48,051 --> 00:03:52,690 Seren ffeil ptr-- PTR bod yn gyffredinol enw am ffeil pointer-- fopen 79 00:03:52,690 --> 00:03:57,300 ac yr ydym yn pasio mewn dau beth, enw ffeil a llawdriniaeth rydym am ymgymryd ag ef. 80 00:03:57,300 --> 00:04:01,690 Felly efallai gennym galwad sy'n edrych fel this-- seren ffeil PTR 1 yn dychwelyd fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 A gweithrediad yr wyf wedi ei ddewis yn r. 83 00:04:07,020 --> 00:04:08,639 >> Felly, beth yn eich barn r yma? 84 00:04:08,639 --> 00:04:11,180 Beth yw'r math o bethau yr ydym yn allai fod yn gallu ei wneud i ffeiliau? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 Felly r yw llawdriniaeth yr ydym dewis pan fyddwn eisiau darllen ffeil. 87 00:04:17,500 --> 00:04:20,260 Felly byddem bôn pan rydym yn gwneud galwad fel hyn 88 00:04:20,260 --> 00:04:25,440 fod yn cael ein hunain pwyntydd ffeil megis y gallem wedyn darllen gwybodaeth 89 00:04:25,440 --> 00:04:27,770 o file1.txt. 90 00:04:27,770 --> 00:04:34,190 >> Yn yr un modd, gallem agor 2.txt ffeil ar gyfer ysgrifennu ac felly rydym yn gallu pasio ptr2, 91 00:04:34,190 --> 00:04:38,210 pwyntydd ffeil dwi wedi creu yma, fel dadl i unrhyw swyddogaeth sy'n 92 00:04:38,210 --> 00:04:40,080 yn ysgrifennu gwybodaeth i ffeil. 93 00:04:40,080 --> 00:04:43,767 Ac yn debyg i ysgrifennu, mae ' hefyd yr opsiwn i atodi, a. 94 00:04:43,767 --> 00:04:45,600 Y gwahaniaeth rhwng ysgrifennu a atodi 95 00:04:45,600 --> 00:04:50,920 yw bod pan fyddwch yn ysgrifennu at ffeil, os byddwch yn gwneud galwad i fopen ar gyfer ysgrifennu 96 00:04:50,920 --> 00:04:54,761 a bod y ffeil yn bodoli eisoes, 'i' mynd i ysgrifennu dros y ffeil gyfan. 97 00:04:54,761 --> 00:04:56,510 Mae'n mynd i ddechrau ar y dechrau, 98 00:04:56,510 --> 00:04:58,820 dileu yr holl wybodaeth dyna yno eisoes. 99 00:04:58,820 --> 00:05:02,210 >> Ond os byddwch yn agor ar gyfer atodi, bydd yn mynd i ddiwedd y ffeil 100 00:05:02,210 --> 00:05:04,340 os oes eisoes yn destun mewn neu wybodaeth ynddo, 101 00:05:04,340 --> 00:05:06,040 a bydd wedyn yn dechrau ysgrifennu oddi yno. 102 00:05:06,040 --> 00:05:08,570 Felly, ni fyddwch yn colli unrhyw un o'r wybodaeth yr ydych wedi ei wneud o'r blaen. 103 00:05:08,570 --> 00:05:12,110 P'un a ydych am ysgrifennu neu atodi math o dibynnu ar y sefyllfa. 104 00:05:12,110 --> 00:05:16,840 Ond mae'n debyg y byddwch yn gwybod beth mae'r gweithrediad cywir yw pan ddaw'r amser. 105 00:05:16,840 --> 00:05:18,020 Felly dyna fopen. 106 00:05:18,020 --> 00:05:18,930 >> Beth am fclose? 107 00:05:18,930 --> 00:05:21,600 Wel, 'n bert syml, fclose dim ond yn derbyn y pwyntydd ffeil. 108 00:05:21,600 --> 00:05:24,000 Ac fel y gallech ddisgwyl, yn cau y ffeil. 109 00:05:24,000 --> 00:05:29,270 Ac unwaith y byddwn wedi cau ffeil, ni allwn cyflawni unrhyw mwy ffeil I / O swyddogaethau, 110 00:05:29,270 --> 00:05:31,420 darllen neu ysgrifennu, ar y ffeil. 111 00:05:31,420 --> 00:05:36,444 Mae'n rhaid i ni ail-agor y ffeilio amser arall er mwyn 112 00:05:36,444 --> 00:05:38,610 parhau i weithio gyda gan ddefnyddio'r swyddogaethau I / O. 113 00:05:38,610 --> 00:05:41,520 Fodd Felly fclose rydym yn ei wneud gweithio gyda'r ffeil hon. 114 00:05:41,520 --> 00:05:44,690 A'r holl mae angen i basio i mewn yn enw pwyntydd ffeil. 115 00:05:44,690 --> 00:05:50,010 Felly, ar un neu ddau sleidiau yn ôl, rydym yn fopened ffeil 1 dot testun ar gyfer darllen 116 00:05:50,010 --> 00:05:52,854 ac rydym yn neilltuo y ffeil pwyntydd i ptr1. 117 00:05:52,854 --> 00:05:55,020 Nawr rydym wedi penderfynu ein bod gwneud darllen y ffeil. 118 00:05:55,020 --> 00:05:56,561 Nid oes angen i ni wneud mwy ag ef. 119 00:05:56,561 --> 00:05:58,890 Y gallwn ptr1 unig fclose. 120 00:05:58,890 --> 00:06:01,950 Ac yn yr un modd, gallem fclose y rhai eraill. 121 00:06:01,950 --> 00:06:02,450 Iawn. 122 00:06:02,450 --> 00:06:03,700 Felly mae hynny'n agor a chau. 123 00:06:03,700 --> 00:06:05,780 Dyna'r ddau sylfaenol gweithrediadau cychwyn. 124 00:06:05,780 --> 00:06:08,050 >> Nawr rydym am i mewn gwirionedd gwneud rhai pethau diddorol, 125 00:06:08,050 --> 00:06:11,940 a'r swyddogaeth cyntaf inni chi helpu gweld a fydd yn gwneud hynny yn fgetc-- 126 00:06:11,940 --> 00:06:14,110 ffeil yn cael cymeriad. 127 00:06:14,110 --> 00:06:17,350 Dyna beth fgetc yn gyffredinol Byddai cyfieithu i. 128 00:06:17,350 --> 00:06:20,190 Ei nod mewn bywyd yw Darllenwch y cymeriad nesaf, 129 00:06:20,190 --> 00:06:22,079 neu os yw hyn yn eich iawn alwad gyntaf i fgetc 130 00:06:22,079 --> 00:06:23,870 am ffeil penodol, cymeriad cyntaf. 131 00:06:23,870 --> 00:06:26,210 Ond yna ar ôl hynny, byddwch yn cael yr un nesaf, 132 00:06:26,210 --> 00:06:31,500 cymeriad nesaf iawn o hynny ffeil, a storfeydd mewn newidyn cymeriad. 133 00:06:31,500 --> 00:06:34,490 Fel yr ydym wedi ei wneud yma, ch torgoch hafal fgetc, 134 00:06:34,490 --> 00:06:36,389 pasio yn enw pwyntydd ffeil. 135 00:06:36,389 --> 00:06:38,180 Unwaith eto, mae'n iawn bwysig yma i'w gofio 136 00:06:38,180 --> 00:06:41,430 hynny er mwyn cael llawdriniaeth hon yn llwyddo, 137 00:06:41,430 --> 00:06:45,690 pwyntydd ffeil must've hun wedi'i agor ar gyfer darllen. 138 00:06:45,690 --> 00:06:50,589 Ni allwn ddarllen cymeriad o ffeil pwyntydd a agorodd i ni ar gyfer ysgrifennu. 139 00:06:50,589 --> 00:06:52,630 Felly dyna un o'r cyfyngiadau fopen, dde? 140 00:06:52,630 --> 00:06:55,470 Mae'n rhaid i ni gyfyngu ein hunain i berfformio yn unig 141 00:06:55,470 --> 00:06:57,710 un gweithrediad gydag un pwyntydd ffeil. 142 00:06:57,710 --> 00:07:00,220 Os ydym yn awyddus i ddarllen ac ysgrifennu o'r un ffeil, 143 00:07:00,220 --> 00:07:03,840 byddai gennym ar agor dau ar wahân awgrymiadau ffeil at yr un file-- 144 00:07:03,840 --> 00:07:05,670 un ar gyfer darllen, un ar gyfer ysgrifennu. 145 00:07:05,670 --> 00:07:08,400 >> Felly eto, yr unig reswm Rwy'n dod bod hyd yn awr yw 146 00:07:08,400 --> 00:07:11,920 oherwydd os ydym yn mynd i wneud galwad i fgetc, hynny must've pwyntydd ffeil 147 00:07:11,920 --> 00:07:14,172 wedi'i agor ar gyfer darllen. 148 00:07:14,172 --> 00:07:15,880 Ac yna 'n bert syml, i gyd mae angen i ni ei wneud 149 00:07:15,880 --> 00:07:17,546 yn pasio yn enw'r pwyntydd ffeil. 150 00:07:17,546 --> 00:07:21,060 Felly ch torgoch hafal ptr1 fgetc. 151 00:07:21,060 --> 00:07:23,200 >> Mae hynny'n mynd i gael i ni y character-- nesaf 152 00:07:23,200 --> 00:07:25,575 neu eto, os mai dyma'r cyntaf amser rydym wedi gwneud yr alwad hon, 153 00:07:25,575 --> 00:07:29,750 y character-- cyntaf o ba bynnag ffeil yn cael ei tynnu sylw ato gan ptr1. 154 00:07:29,750 --> 00:07:32,210 Dwyn i gof bod hynny'n ffeil 1 dot testun. 155 00:07:32,210 --> 00:07:36,490 Bydd yn cael y cymeriad cyntaf y a byddwn yn ei storio yn y ch amrywiol. 156 00:07:36,490 --> 00:07:37,941 Pretty syml. 157 00:07:37,941 --> 00:07:40,190 Felly, rydym wedi dim ond yn edrych ar dair swyddogaethau ac eisoes rydym yn 158 00:07:40,190 --> 00:07:43,070 Gall wneud rhywbeth eithaf taclus. 159 00:07:43,070 --> 00:07:46,320 >> Felly, os byddwn yn cymryd y gallu hwn o gael gymeriad 160 00:07:46,320 --> 00:07:48,943 ac yr ydym yn ddolen iddo- felly rydym parhau i gael cymeriadau 161 00:07:48,943 --> 00:07:51,390 o ffeil drosodd a drosodd ac yn awr rydym over-- 162 00:07:51,390 --> 00:07:54,500 gallu darllen pob un cymeriad ffeil. 163 00:07:54,500 --> 00:07:58,670 Ac os ydym yn argraffu pob cymeriad yn syth ar ôl i ni ei ddarllen, 164 00:07:58,670 --> 00:08:01,960 rydym bellach wedi darllen o ffeil a argraffwyd ei gynnwys ar y sgrin. 165 00:08:01,960 --> 00:08:05,610 Rydym wedi concatenated effeithiol y ffeil ar y sgrin. 166 00:08:05,610 --> 00:08:09,670 A dyna beth mae'r Linux cath gorchymyn ei wneud. 167 00:08:09,670 --> 00:08:13,250 >> Os ydych yn fath gath yn enw'r ffeil, mae'n Bydd argraffu'r holl gynnwys 168 00:08:13,250 --> 00:08:15,160 y ffeil yn eich ffenestr terfynell. 169 00:08:15,160 --> 00:08:19,010 Ac felly dolen bach hyn yma, Dim ond tair llinell o god, 170 00:08:19,010 --> 00:08:23,270 ond ei fod yn dyblygu effeithiol y gath gorchymyn Linux. 171 00:08:23,270 --> 00:08:25,210 Felly gallai cystrawen hwn edrych ychydig yn od, 172 00:08:25,210 --> 00:08:26,670 ond dyma beth sy'n digwydd yma. 173 00:08:26,670 --> 00:08:31,460 Er ch hafal fgetc, nid PTR yn cyfartal i EOF-- ei fod yn lond ceg cyfan, 174 00:08:31,460 --> 00:08:34,669 ond gadewch i dorri i lawr yn unig felly mae'n glir ar y gystrawen. 175 00:08:34,669 --> 00:08:37,169 Rwyf wedi cyfuno ei er mwyn y gofod, 176 00:08:37,169 --> 00:08:39,049 er ei fod ychydig yn syntactically anodd. 177 00:08:39,049 --> 00:08:41,194 >> Felly y rhan hon yn gywir gwyrdd Erbyn hyn, yr hyn sy'n ei wneud? 178 00:08:41,194 --> 00:08:42,860 Wel, dyna'n union ein fgetc galwad, dde? 179 00:08:42,860 --> 00:08:44,530 Rydym wedi gweld hynny o'r blaen. 180 00:08:44,530 --> 00:08:49,500 Mae'n cael un cymeriad o'r ffeil. 181 00:08:49,500 --> 00:08:53,220 Yna, rydym yn cymharu bod cymeriad yn erbyn EOF. 182 00:08:53,220 --> 00:08:57,470 EOF yn werth arbennig sy'n a ddiffinnir yn io.h safonol, sydd 183 00:08:57,470 --> 00:08:59,390 yw diwedd cymeriad ffeil. 184 00:08:59,390 --> 00:09:03,450 Felly, yn y bôn yr hyn sy'n mynd i ddigwydd yw y bydd dolen hwn yn darllen cymeriad, 185 00:09:03,450 --> 00:09:07,445 gymharu â EOF, mae'r diwedd y cymeriad ffeil. 186 00:09:07,445 --> 00:09:10,070 Os nad ydynt yn cyfateb, felly nid ydym wedi cyrraedd diwedd y ffeil, 187 00:09:10,070 --> 00:09:11,490 byddwn print that cymeriad allan. 188 00:09:11,490 --> 00:09:13,740 Yna, byddwn yn mynd yn ôl at y gan ddechrau o'r ddolen eto. 189 00:09:13,740 --> 00:09:18,310 Byddwn yn cael cymeriad, gwiriwch erbyn EOF, ei hargraffu, ac yn y blaen 190 00:09:18,310 --> 00:09:21,094 ac yn y blaen ac yn y blaen, dolennu drwy'r yn y modd hwnnw 191 00:09:21,094 --> 00:09:22,760 hyd nes y byddwn wedi cyrraedd diwedd y ffeil. 192 00:09:22,760 --> 00:09:24,593 Ac yna erbyn hynny, byddwn wedi argraffu 193 00:09:24,593 --> 00:09:26,210 allan holl gynnwys y ffeil. 194 00:09:26,210 --> 00:09:29,450 Felly eto, yr ydym wedi gweld yn unig fopen, fclose, a fgetc 195 00:09:29,450 --> 00:09:34,950 ac eisoes y gallwn ni ddyblygu gorchymyn terfynell Linux. 196 00:09:34,950 --> 00:09:38,850 >> Fel y dywedais ar y dechrau, cawsom fgetc a fputc, 197 00:09:38,850 --> 00:09:41,860 ac fputc oedd y cydymaith swyddogaeth fgetc. 198 00:09:41,860 --> 00:09:44,880 Ac felly, fel y gallech ddychmygu, ei fod yn y ysgrifennu cyfwerth. 199 00:09:44,880 --> 00:09:49,440 Mae'n ein galluogi i ysgrifennu cymeriad unigol i ffeil. 200 00:09:49,440 --> 00:09:53,290 >> Unwaith eto, mae'r cafeat bod, dim ond fel yr oedd gyda fgetc, y ffeil 201 00:09:53,290 --> 00:09:56,660 ein bod yn ysgrifennu at must've bod yn Agorodd ar gyfer ysgrifennu neu ar gyfer atodi. 202 00:09:56,660 --> 00:10:00,820 Os ydym yn ceisio defnyddio fputc ar ffeil ein bod wedi agor ar gyfer darllen, 203 00:10:00,820 --> 00:10:02,760 rydym yn mynd i ddioddef yn dipyn o gamgymeriad. 204 00:10:02,760 --> 00:10:04,440 Ond mae'r alwad yn eithaf syml. 205 00:10:04,440 --> 00:10:08,000 cyfalaf fputc Mae ptr2, pob mae hynny'n mynd i wneud yw ei fod yn 206 00:10:08,000 --> 00:10:12,040 mynd i ysgrifennu llythyr i A mewn i ffeil 2 dot 207 00:10:12,040 --> 00:10:14,760 testun, a oedd enw'r ffeil ein bod yn agor ac yn neilltuo 208 00:10:14,760 --> 00:10:17,280 pwyntydd i ptr2. 209 00:10:17,280 --> 00:10:20,430 Felly rydym yn mynd i ysgrifennu cyfalaf A i ffeilio 2 dot testun. 210 00:10:20,430 --> 00:10:24,592 A byddwn yn ysgrifennu ebychnod pwyntio i ffeilio 3 dot 211 00:10:24,592 --> 00:10:27,330 testun, a gafodd ei sylw at y ffaith ato gan ptr3. 212 00:10:27,330 --> 00:10:29,730 Felly unwaith eto, eithaf syml yma. 213 00:10:29,730 --> 00:10:32,727 >> Ond erbyn hyn y gallwn ei wneud beth arall. 214 00:10:32,727 --> 00:10:34,560 Mae gennym yr enghraifft hon yr oeddem yn jyst yn mynd dros 215 00:10:34,560 --> 00:10:38,950 am allu ailadrodd y gath Linux gorchymyn, yr un sy'n argraffu allan 216 00:10:38,950 --> 00:10:40,500 i'r sgrin. 217 00:10:40,500 --> 00:10:43,510 Wel, nawr bod gennym y gallu i ddarllen cymeriadau o'r ffeiliau 218 00:10:43,510 --> 00:10:46,590 ac ysgrifennu cymeriadau i ffeiliau, pam nad ydym yn unig rhodder y 219 00:10:46,590 --> 00:10:50,720 ffonio i printf gyda galwad i fputc. 220 00:10:50,720 --> 00:10:54,090 >> Ac yn awr rydym wedi dyblygu cp, gorchymyn Linux sylfaenol iawn 221 00:10:54,090 --> 00:10:59,100 ein bod yn siarad am ffordd bell yn ôl yn yr Linux gorchmynion fideo. 222 00:10:59,100 --> 00:11:01,070 Rydym wedi effeithiol dyblygu y dde yma. 223 00:11:01,070 --> 00:11:04,790 Rydym yn darllen cymeriad ac yna rydym yn ysgrifenedig ei chymeriad i ffeil arall. 224 00:11:04,790 --> 00:11:07,660 Darllen o un ffeil, ysgrifennu i un arall, drosodd a throsodd 225 00:11:07,660 --> 00:11:11,350 ar ôl tro hyd nes y byddwn yn cyrraedd EOF. 226 00:11:11,350 --> 00:11:14,250 Mae gennym hyd at ddiwedd y ffeil ydym yn ceisio ei gopïo oddi wrth. 227 00:11:14,250 --> 00:11:18,500 A thrwy y byddwn wedi ysgrifennu i gyd o'r cymeriadau angen at y ffeil yr ydym 228 00:11:18,500 --> 00:11:19,500 bod rydym yn ysgrifennu at. 229 00:11:19,500 --> 00:11:24,270 Felly mae hyn yn cp, mae'r copi gorchymyn Linux. 230 00:11:24,270 --> 00:11:26,550 >> Ar y cychwyn cyntaf o fideo hwn, cefais y cafeat 231 00:11:26,550 --> 00:11:29,840 y byddem yn siarad am ychydig bach am awgrymiadau. 232 00:11:29,840 --> 00:11:32,480 Dyma benodol lle rydym yn mynd i siarad am awgrymiadau 233 00:11:32,480 --> 00:11:34,800 yn ychwanegol i ffeilio awgrymiadau. 234 00:11:34,800 --> 00:11:37,870 Felly swyddogaeth hon yn edrych yn fath o frawychus. 235 00:11:37,870 --> 00:11:39,120 Mae'n cael nifer o baramedrau. 236 00:11:39,120 --> 00:11:40,430 Mae llawer yn digwydd yma. 237 00:11:40,430 --> 00:11:42,760 Mae llawer o wahanol lliwiau a thestunau. 238 00:11:42,760 --> 00:11:47,100 Ond mewn gwirionedd, dim ond y Fersiwn generig o fgetc 239 00:11:47,100 --> 00:11:50,110 sy'n ein galluogi i gael unrhyw faint o wybodaeth. 240 00:11:50,110 --> 00:11:53,560 Gall fod ychydig yn aneffeithlon os ydym yn cael cymeriadau un ar y tro, 241 00:11:53,560 --> 00:11:55,770 ailadrodd trwy'r ffeil un cymeriad ar y tro. 242 00:11:55,770 --> 00:12:00,230 Oni fyddai'n brafiach i fynd 100 ar y tro neu 500 ar y tro? 243 00:12:00,230 --> 00:12:03,250 >> Wel, fread a'i swyddogaeth cydymaith fwrite, a byddwn yn siarad am 244 00:12:03,250 --> 00:12:05,490 mewn eiliad, yn caniatáu i ni wneud hynny. 245 00:12:05,490 --> 00:12:08,480 Gallwn ddarllen swm mympwyol gwybodaeth o ffeil 246 00:12:08,480 --> 00:12:10,290 ac yr ydym yn ei storio yn rhywle dros dro. 247 00:12:10,290 --> 00:12:12,980 Yn hytrach na gallu i ddim ond ffitio mewn newidyn sengl, 248 00:12:12,980 --> 00:12:15,790 Efallai y bydd angen i ni ei storio mewn arae. 249 00:12:15,790 --> 00:12:19,980 Ac felly, yr ydym yn pasio mewn pedwar dadleuon i fread-- pwyntydd 250 00:12:19,980 --> 00:12:23,940 i'r lleoliad lle rydym yn mynd i storio gwybodaeth, 251 00:12:23,940 --> 00:12:29,180 pa mor fawr pob uned o wybodaeth fydd, sawl uned o wybodaeth 252 00:12:29,180 --> 00:12:35,192 yr ydym am ei gaffael, ac o pa ffeil yr ydym am eu cael. 253 00:12:35,192 --> 00:12:37,150 Yn ôl pob tebyg gorau darluniadol gydag enghraifft yma. 254 00:12:37,150 --> 00:12:41,640 Felly, gadewch i ni ddweud ein bod yn datgan amrywiaeth o 10 o gyfanrifau. 255 00:12:41,640 --> 00:12:45,080 Rydym newydd ddatgan ar y pentwr fympwyol int arr 10. 256 00:12:45,080 --> 00:12:46,970 Felly dyna eithaf syml. 257 00:12:46,970 --> 00:12:51,970 Nawr yr hyn rydym yn ei wneud fodd bynnag, yw y frecall yn ein bod yn darllen maint y int 258 00:12:51,970 --> 00:12:54,180 Amseroedd 10 bytes o wybodaeth. 259 00:12:54,180 --> 00:12:59,040 Maint y int lles four-- dyna maint cyfanrif mewn c. 260 00:12:59,040 --> 00:13:02,790 >> Felly, yr hyn yr ydym yn ei wneud yw ein bod yn darllen 40 bytes gwerth o wybodaeth 261 00:13:02,790 --> 00:13:05,850 o'r ffeil yn tynnu sylw at y PTR. 262 00:13:05,850 --> 00:13:08,600 Ac rydym yn storio rhai 40 bytes rhywle 263 00:13:08,600 --> 00:13:12,080 lle yr ydym wedi neilltuo 40 bytes gwerth o gof. 264 00:13:12,080 --> 00:13:15,970 Yn ffodus, yr ydym eisoes wedi gwneud hynny gan datgan arr, bod amrywiaeth iawn yno. 265 00:13:15,970 --> 00:13:19,770 Sy'n gallu ddaliad 10 uned pedwar-beit. 266 00:13:19,770 --> 00:13:22,860 Felly, yn gyfanswm, gall ddal 40 beit gwerth gwybodaeth. 267 00:13:22,860 --> 00:13:26,540 Ac rydym yn awr yn darllen 40 bytes gwybodaeth o'r ffeil, 268 00:13:26,540 --> 00:13:30,330 ac rydym yn storio mewn trefn. 269 00:13:30,330 --> 00:13:35,470 >> Dwyn i gof o'r fideo ar awgrymiadau sy'n enw amrywiaeth, megis arr, 270 00:13:35,470 --> 00:13:38,370 mewn gwirionedd dim ond pwyntydd at ei elfen gyntaf. 271 00:13:38,370 --> 00:13:43,680 Felly, pan fyddwn yn pasio yn arr yno, rydym yn , mewn gwirionedd, gan fynd heibio mewn pwyntydd. 272 00:13:43,680 --> 00:13:46,120 >> Yn yr un modd y gallwn ei wneud this-- Nid ydym yn ei wneud o reidrwydd 273 00:13:46,120 --> 00:13:51,200 Mae angen i achub ein byffer ar y corn. 274 00:13:51,200 --> 00:13:54,990 Gallem hefyd ddeinamig dyrannu a byffer fel hyn, gan ddefnyddio malloc. 275 00:13:54,990 --> 00:13:57,340 Cofiwch, pan fyddwn yn ddynamig dyrannu cof, 276 00:13:57,340 --> 00:14:00,550 rydym yn arbed ar y pentwr, nid oedd y pentwr. 277 00:14:00,550 --> 00:14:02,110 Ond mae'n dal i fod yn glustog. 278 00:14:02,110 --> 00:14:06,810 >> Mae'n dal i, yn yr achos hwn, yn dal 640 bytes o wybodaeth 279 00:14:06,810 --> 00:14:09,230 oherwydd bod ddwbl yn cymryd wyth bytes. 280 00:14:09,230 --> 00:14:11,570 Ac rydym yn gofyn am 80 ohonynt. 281 00:14:11,570 --> 00:14:13,770 Rydym yn awyddus i gael lle i ddal 80 o dyblau. 282 00:14:13,770 --> 00:14:17,210 Felly 80 gwaith 8 yn wybodaeth 640 bytes. 283 00:14:17,210 --> 00:14:21,880 A bod alwad i fread yw casglu 640 bytes o wybodaeth 284 00:14:21,880 --> 00:14:27,770 o'r ffeil tynnu sylw at gan PTR a storio yn awr mewn arr2. 285 00:14:27,770 --> 00:14:32,770 >> Nawr gallwn hefyd yn trin fread yn union fel galwad i fgetc. 286 00:14:32,770 --> 00:14:37,140 Yn yr achos hwn, rydym yn jyst yn ceisio at cael un cymeriad o'r ffeil. 287 00:14:37,140 --> 00:14:40,070 Ac nid oes angen i ni amrywiaeth i gynnal cymeriad. 288 00:14:40,070 --> 00:14:43,170 Allwn ei storio mewn newidyn cymeriad. 289 00:14:43,170 --> 00:14:46,390 >> Mae'r dal, fodd bynnag, yw bod pan rydym yn unig yn cael newidiol, 290 00:14:46,390 --> 00:14:50,290 mae angen i basio yn y cyfeiriad y newidyn 291 00:14:50,290 --> 00:14:52,550 oherwydd dwyn i gof bod y ddadl gyntaf i fread 292 00:14:52,550 --> 00:14:59,210 yn pwyntydd i'r lleoliad a'r cof lle'r ydym am storio'r wybodaeth. 293 00:14:59,210 --> 00:15:01,550 Unwaith eto, yr enw o amrywiaeth yn pwyntydd. 294 00:15:01,550 --> 00:15:04,200 Felly nid oes angen i ni wneud amrywiaeth ampersand. 295 00:15:04,200 --> 00:15:07,270 Ond c, cymeriad c yma, nid yw arae. 296 00:15:07,270 --> 00:15:08,390 Mae'n dim ond amrywiol. 297 00:15:08,390 --> 00:15:11,840 Ac felly mae angen i ni basio ampersand c i ddangos 298 00:15:11,840 --> 00:15:15,350 bod dyna y cyfeiriad lle rydym eisiau i storio hyn yn un beit o wybodaeth, 299 00:15:15,350 --> 00:15:20,479 mae hyn yn un cymeriad sy'n rydym yn casglu o PTR. 300 00:15:20,479 --> 00:15:22,270 Fwrite-- byddaf yn mynd drwy mae hyn ychydig yn fwy 301 00:15:22,270 --> 00:15:25,440 quickly-- 'n bert lawer y union sy'n cyfateb i fread 302 00:15:25,440 --> 00:15:27,720 ac eithrio ei fod ar gyfer ysgrifennu yn hytrach na darllen, dim ond 303 00:15:27,720 --> 00:15:31,610 fel yr other-- rydym wedi cael ar agor ac yn agos, yn cael cymeriad, 304 00:15:31,610 --> 00:15:32,530 ysgrifennu gymeriad. 305 00:15:32,530 --> 00:15:35,040 Nawr mae'n cael mympwyol faint o wybodaeth, 306 00:15:35,040 --> 00:15:37,170 swm mympwyol cywir o wybodaeth. 307 00:15:37,170 --> 00:15:39,790 Felly yn union fel o'r blaen, y gallwn cael amrywiaeth o 10 o gyfanrifau 308 00:15:39,790 --> 00:15:43,210 lle mae gennym eisoes gwybodaeth a storiwyd, efallai. 309 00:15:43,210 --> 00:15:46,580 >> Mae'n debyg mai rhai llinellau o god a ddylai fynd rhwng y ddau 310 00:15:46,580 --> 00:15:49,990 lle yr wyf yn llenwi arr â rhywbeth ystyrlon. 311 00:15:49,990 --> 00:15:51,880 Yr wyf yn ei lenwi â 10 o gyfanrifau gwahanol. 312 00:15:51,880 --> 00:15:54,920 Ac yn lle, yr hyn rwy'n wneud yw ysgrifennu o arr 313 00:15:54,920 --> 00:15:58,600 a chasglu y wybodaeth gan arr. 314 00:15:58,600 --> 00:16:02,390 A dwi'n cymryd bod y wybodaeth a'i roi i mewn i'r ffeil. 315 00:16:02,390 --> 00:16:05,410 >> Felly, yn lle ei fod o 'r ffeilia at y byffer, 316 00:16:05,410 --> 00:16:08,790 rydym yn awr yn mynd o y byffer at y ffeil. 317 00:16:08,790 --> 00:16:10,580 Felly dim ond y gwrthwyneb. 318 00:16:10,580 --> 00:16:16,680 Felly unwaith eto, yn union fel o'r blaen, y gallwn hefyd yn cael cyfran pentwr o gof 319 00:16:16,680 --> 00:16:19,600 bod rydym wedi ddeinamig ddyrannu a'i darllen o hynny 320 00:16:19,600 --> 00:16:21,570 ac ysgrifennwch hynny at y ffeil. 321 00:16:21,570 --> 00:16:24,900 >> Ac mae gennym hefyd newidyn sengl gallu dal un beit 322 00:16:24,900 --> 00:16:27,200 gwybodaeth, megis cymeriad. 323 00:16:27,200 --> 00:16:29,830 Ond unwaith eto, mae angen i basio mewn cyfeiriad y newidyn 324 00:16:29,830 --> 00:16:31,840 pan fyddwn am ei ddarllen ohono. 325 00:16:31,840 --> 00:16:35,280 Felly gallwn ysgrifennu'r wybodaeth rydym yn dod o hyd yn y cyfeiriad hwnnw 326 00:16:35,280 --> 00:16:39,050 i'r pwyntydd ffeil, PTR. 327 00:16:39,050 --> 00:16:41,630 >> Mae llawer o eraill file mawr Rwyf swyddogaethau / O 328 00:16:41,630 --> 00:16:44,650 bod yn gwneud amryw o bethau ar wahân y rhai yr ydym wedi siarad am heddiw. 329 00:16:44,650 --> 00:16:46,450 Mae cwpl o'r rhai efallai y byddwch yn dod o hyd yn ddefnyddiol 330 00:16:46,450 --> 00:16:50,840 yn fgets a fputs, sef yr hyn sy'n cyfateb 331 00:16:50,840 --> 00:16:56,190 o fgetc a fputc ond ar gyfer darllen llinyn unigol o ffeil. 332 00:16:56,190 --> 00:16:59,020 Yn hytrach na gymeriad unigol, bydd yn darllen llinyn cyfan. 333 00:16:59,020 --> 00:17:02,940 fprintf, a oedd yn y bôn yn caniatáu chi ddefnyddio printf i ysgrifennu i ffeil. 334 00:17:02,940 --> 00:17:05,619 Felly, yn union fel chi yn gallu gwneud y amnewid amrywiol gan ddefnyddio 335 00:17:05,619 --> 00:17:09,900 y ff dalfannau y cant a cant d, ac yn y blaen, gyda printf 336 00:17:09,900 --> 00:17:14,690 yn yr un modd allwch gymryd y llinyn printf ac argraffu rhywbeth 337 00:17:14,690 --> 00:17:16,800 fel yna i ffeil. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- os oes gennych chwaraewr DVD yw'r gymhariaeth fel arfer rwy'n defnyddio Yma-- 339 00:17:20,720 --> 00:17:23,109 yn fath o fel defnyddio eich ailddirwyn a ymlaen yn gyflym 340 00:17:23,109 --> 00:17:25,819 botymau i symud o gwmpas y ffilm. 341 00:17:25,819 --> 00:17:28,369 Yn yr un modd, gallwch symud o gwmpas y ffeil. 342 00:17:28,369 --> 00:17:30,250 Un o'r pethau y tu mewn bod strwythur y ffeil 343 00:17:30,250 --> 00:17:34,270 hynny c greu ar eich cyfer yn ddangosydd o ble rydych chi yn y ffeil. 344 00:17:34,270 --> 00:17:36,420 Ydych chi ar yr union cychwyn, yn beit sero? 345 00:17:36,420 --> 00:17:39,290 Ydych chi mewn beit 100, beit 1,000, ac yn y blaen? 346 00:17:39,290 --> 00:17:44,340 Gallwch ddefnyddio fseek i symud yn fympwyol y dangosydd ymlaen neu yn ôl. 347 00:17:44,340 --> 00:17:46,744 >> Ac yn ftell, unwaith eto yn debyg i chwaraewr DVD, 348 00:17:46,744 --> 00:17:49,660 Mae fel ychydig cloc sy'n dweud wrthych faint o munudau ac eiliadau chi 349 00:17:49,660 --> 00:17:52,480 yn i mewn ffilm arbennig. 350 00:17:52,480 --> 00:17:56,990 Yn yr un modd, ftell dweud wrthych sut mae llawer o bytes ydych yn i mewn i'r ffeil. 351 00:17:56,990 --> 00:18:00,210 feof yn fersiwn wahanol o ganfod a ydych chi wedi 352 00:18:00,210 --> 00:18:01,700 cyrraedd diwedd y ffeil. 353 00:18:01,700 --> 00:18:03,600 Ac ferror yn swyddogaeth y gallwch ei ddefnyddio 354 00:18:03,600 --> 00:18:06,959 i ganfod a yw rhywbeth wedi mynd o'i le gweithio gyda ffeil. 355 00:18:06,959 --> 00:18:08,750 Unwaith eto, mae hyn yn unig crafu'r wyneb. 356 00:18:08,750 --> 00:18:12,730 Mae dal llawer mwy ffeil I / O swyddogaethau yn y io.h. safonol 357 00:18:12,730 --> 00:18:16,620 Ond bydd hyn yn ôl pob tebyg yn mynd â chi dechrau gweithio gyda awgrymiadau ffeil. 358 00:18:16,620 --> 00:18:17,640 Rwy'n Doug Lloyd. 359 00:18:17,640 --> 00:18:19,750 Mae hyn yn cs50. 360 00:18:19,750 --> 00:18:21,669