1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> Oratè: Se konsa, lwen, li la gen anpil chans ki pi fò nan pwogram ou 3 00:00:07,870 --> 00:00:10,170 yo te yon ti jan efemèr. 4 00:00:10,170 --> 00:00:13,310 Ou kouri nan yon pwogram tankou Mario oswa visye. 5 00:00:13,310 --> 00:00:17,350 Li fè yon bagay, li petèt envit kap itilize li an pou kèk enfòmasyon, 6 00:00:17,350 --> 00:00:20,400 enprime kèk pwodiksyon nan ekran an, men Lè sa a lè pwogram ou an sou yo, 7 00:00:20,400 --> 00:00:23,252 gen nan reyèlman okenn prèv gen li te tout tan tout tan kouri nan plas an premye. 8 00:00:23,252 --> 00:00:25,960 Mwen vle di, asire w, ou ta ka te kite li louvri nan fennèt la tèminal, 9 00:00:25,960 --> 00:00:29,770 men si ou klè ekran ou a, gen nan reyèlman okenn prèv ki montre li te egziste. 10 00:00:29,770 --> 00:00:33,720 Nou pa gen yon mwayen pou estoke enfòmasyon ki pèsistan, enfòmasyon 11 00:00:33,720 --> 00:00:36,890 ki egziste apre nou an Pwogram sispann kouri, 12 00:00:36,890 --> 00:00:39,241 oswa nou pa gen jiska pwen sa a. 13 00:00:39,241 --> 00:00:41,490 Erezman menm si, c fè bay nou ak kapasite nan 14 00:00:41,490 --> 00:00:44,220 fè sa pa mete ann aplikasyon yon bagay yo rele 15 00:00:44,220 --> 00:00:48,330 yon dosye, yon estrikti ki fondamantalman reprezante yon dosye ke ou ta double 16 00:00:48,330 --> 00:00:53,826 klike sou òdinatè w lan, si w ap itilize nan yon anviwònman utilisateur grafik. 17 00:00:53,826 --> 00:00:55,700 Anjeneral lè w ap travay ak c, nou ap aktyèlman 18 00:00:55,700 --> 00:00:59,965 ale nan dwe ap travay ak endikasyon files-- dosye stars-- 19 00:00:59,965 --> 00:01:02,090 eksepte pou yon ti jan lè nou pale sou yon koup 20 00:01:02,090 --> 00:01:04,560 nan fonksyon yo ki travay avèk endikasyon dosye-a. 21 00:01:04,560 --> 00:01:08,990 Ou pa bezwen te reyèlman fouye twò fon nan konpreyansyon endikasyon 22 00:01:08,990 --> 00:01:09,730 tèt yo. 23 00:01:09,730 --> 00:01:12,870 Genyen yon ti kras ti jan minuskul kote nou pral pale sou yo, 24 00:01:12,870 --> 00:01:18,090 men jeneralman ranpli endikasyon ak endikasyon, pandan y ap relye, 25 00:01:18,090 --> 00:01:20,290 yo pa egzakteman menm bagay la. 26 00:01:20,290 --> 00:01:22,440 >> Kounye a ki sa mwen vle di lè M 'ap di done ki pèsistan? 27 00:01:22,440 --> 00:01:23,650 Ki sa ki se ki pèsistan done? 28 00:01:23,650 --> 00:01:25,232 Poukisa nou pran swen sou li? 29 00:01:25,232 --> 00:01:27,190 Di, pou egzanp, ki w ap kouri yon pwogram 30 00:01:27,190 --> 00:01:29,850 oswa ou te reekri yon pwogram sa a, se yon jwèt, 31 00:01:29,850 --> 00:01:32,960 , epi ou vle kenbe tras nan tout nan mouvman itilizatè a 32 00:01:32,960 --> 00:01:36,620 se konsa ke petèt si gen yon bagay ale mal, ou ka revize dosye a apre jwèt la. 33 00:01:36,620 --> 00:01:39,970 Sa a ki sa nou vle di lè nou pale sou done ki pèsistan. 34 00:01:39,970 --> 00:01:43,930 >> Nan kou a nan kouri ou pwogram, se yon dosye kreye. 35 00:01:43,930 --> 00:01:45,680 Lè pwogram ou an te sispann kouri, 36 00:01:45,680 --> 00:01:48,689 ke dosye toujou egziste sou sistèm ou. 37 00:01:48,689 --> 00:01:50,230 Apre sa, nou ka gade nan li epi li egzaminen l '. 38 00:01:50,230 --> 00:01:53,670 Se konsa, ta ke pwogram dwe mete nan te kreye kèk done ki pèsistan, 39 00:01:53,670 --> 00:01:57,390 done egziste apre pwogram lan te fini kouri. 40 00:01:57,390 --> 00:02:02,320 >> Koulye a, tout nan fonksyon sa yo ki travay ak kreye dosye ak manipile 41 00:02:02,320 --> 00:02:04,940 yo nan divès fason ap viv nan estanda io.h, 42 00:02:04,940 --> 00:02:08,210 ki se yon dosye header ki ou te gen anpil chans te liv 43 00:02:08,210 --> 00:02:10,910 ki gen ladan nan tèt la nan bèl pi tout pwogram ou 44 00:02:10,910 --> 00:02:14,130 paske li te gen youn nan la pi fonksyon itil pou nou, 45 00:02:14,130 --> 00:02:16,130 printf, ki tou pèmèt ap viv nan estanda io.h. 46 00:02:16,130 --> 00:02:20,400 Se konsa, ou pa bezwen liv gen ladan nenpòt dosye adisyonèl pwobableman 47 00:02:20,400 --> 00:02:23,540 yo nan lòd yo travay avèk endikasyon dosye-a. 48 00:02:23,540 --> 00:02:29,980 >> Koulye a, chak fonksyon dosye konsèy sèl, oswa chak yon sèl dosye mwen O, pwodiksyon / D ' 49 00:02:29,980 --> 00:02:33,310 fonksyon, aksepte kòm youn nan paramèt li yo oswa entrain 50 00:02:33,310 --> 00:02:35,822 yon pointer-- dosye eksepte pou youn, fopen, ki 51 00:02:35,822 --> 00:02:38,280 se ki sa ou sèvi ak yo ka resevwa dosye a konsèy an plas an premye. 52 00:02:38,280 --> 00:02:41,010 Men, apre ou te louvri nan ranpli epi ou jwenn endikasyon ranpli, 53 00:02:41,010 --> 00:02:43,510 ou ka Lè sa a, pase yo kòm agiman nan fonksyon yo divès kalite 54 00:02:43,510 --> 00:02:46,720 nou ap ale nan pale sou jodi a, menm jan tou anpil lòt moun 55 00:02:46,720 --> 00:02:48,520 pou ke ou ka travay avèk dosye. 56 00:02:48,520 --> 00:02:50,980 >> Se konsa, gen sis bèl yo menm komen debaz 57 00:02:50,980 --> 00:02:52,870 ke nou ap ale nan pale sou jodi a. 58 00:02:52,870 --> 00:02:57,160 fopen ak konpayon li yo fkloz fonksyon, fgetc 59 00:02:57,160 --> 00:03:02,670 ak fputc fonksyon konpayon li yo, ak frèd ak fonksyon konpayon li yo, 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 Se konsa an n jwenn dwa nan li. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- sa li fè? 63 00:03:07,050 --> 00:03:10,050 Oke, li ouvè yon dosye epi li ba ou yon konsèy dosye nan li, 64 00:03:10,050 --> 00:03:14,000 pou ke ou ka Lè sa a, sèvi ak sa ranpli konsèy kòm yon agiman 65 00:03:14,000 --> 00:03:16,730 nan nenpòt nan dosye a lòt mwen / O fonksyon. 66 00:03:16,730 --> 00:03:19,100 Bagay ki pi enpòtan sonje ak fopen 67 00:03:19,100 --> 00:03:24,222 se ke apre ou te louvri nan ranpli oswa te fè yon apèl tankou yonn nan isit la, 68 00:03:24,222 --> 00:03:26,930 ou bezwen yo tcheke a asire w ki konsèy la ke ou te tounen 69 00:03:26,930 --> 00:03:28,320 se pa egal a nil. 70 00:03:28,320 --> 00:03:31,320 Si ou pa gen gade videyo a sou endikasyon, sa a pa ta ka fè sans. 71 00:03:31,320 --> 00:03:35,639 Men, si ou eseye epi dèreferans yon rapèl konsèy nil, 72 00:03:35,639 --> 00:03:38,180 pwogram ou pwal pwobableman soufri yon segmentation [fèbl]. 73 00:03:38,180 --> 00:03:40,540 Nou vle asire w ke nou te resevwa yon tounen konsèy lejitim. 74 00:03:40,540 --> 00:03:43,665 A vas majorite de tan an nou pral gen vinn yon konsèy tounen lejitim 75 00:03:43,665 --> 00:03:45,280 epi li pa pral yon pwoblèm. 76 00:03:45,280 --> 00:03:46,760 >> Se konsa, kouman nou fè yon rele nan fopen? 77 00:03:46,760 --> 00:03:48,051 Li sanble bèl anpil tankou sa a. 78 00:03:48,051 --> 00:03:52,690 Zetwal File ptr-- ptr ke yo te yon jenerik non pou dosye pointer-- fopen 79 00:03:52,690 --> 00:03:57,300 epi nou pase nan de bagay sa yo, yon non dosye ak yon operasyon nou vle antreprann. 80 00:03:57,300 --> 00:04:01,690 Se konsa, nou ta ka gen yon apèl ki sanble ak sa a men ptr zetwal dosye 1 egal fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 Ak operasyon nan mwen te chwazi se r. 83 00:04:07,020 --> 00:04:08,639 >> Se konsa, ki sa ou panse r se isit la? 84 00:04:08,639 --> 00:04:11,180 Ki sa ki kalite ki nan bagay sa yo nou ka kapab pou fè pou dosye? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 Se konsa, r se operasyon an ke nou chwazi lè nou vle li yon dosye-a. 87 00:04:17,500 --> 00:04:20,260 Se konsa, nou ta fondamantalman lè nou fè yon apèl tankou sa a 88 00:04:20,260 --> 00:04:25,440 dwe resevwa tèt nou yon konsèy dosye sa yo ki te kapab Lè sa a, nou li enfòmasyon 89 00:04:25,440 --> 00:04:27,770 soti nan file1.txt. 90 00:04:27,770 --> 00:04:34,190 >> Menm jan an tou, nou te ka louvri dosye 2.txt pou ekri epi pou nou ka pase ptr2, 91 00:04:34,190 --> 00:04:38,210 konsèy la dosye mwen te kreye isit la, kòm yon agiman nan nenpòt fonksyon ki 92 00:04:38,210 --> 00:04:40,080 ekri enfòmasyon nan yon dosye-a. 93 00:04:40,080 --> 00:04:43,767 Apre sa, menm jan ak ekri, gen nan tou opsyon a kole, se yon. 94 00:04:43,767 --> 00:04:45,600 Diferans ki genyen ant ekri ak ajou 95 00:04:45,600 --> 00:04:50,920 ke yo te ke lè ou ekri nan yon dosye, si ou fè yon rele nan fopen pou ekri 96 00:04:50,920 --> 00:04:54,761 e ke dosye deja egziste, li nan ale nan recouvrir dosye a tout antye. 97 00:04:54,761 --> 00:04:56,510 Li k ap pase yo kòmanse nan kòmansman an trè, 98 00:04:56,510 --> 00:04:58,820 efase tout enfòmasyon ki sa a, se deja la. 99 00:04:58,820 --> 00:05:02,210 >> Lè nou konsidere ke si ou louvri li pou ajou, li pral ale nan fen a nan dosye a 100 00:05:02,210 --> 00:05:04,340 si gen nan deja tèks nan li oswa enfòmasyon nan li, 101 00:05:04,340 --> 00:05:06,040 epi li pral lè sa a kòmanse ekri soti nan la. 102 00:05:06,040 --> 00:05:08,570 Se konsa, ou pa pral pèdi nenpòt nan la enfòmasyon ou te fè anvan. 103 00:05:08,570 --> 00:05:12,110 Si ou vle ekri oswa kole sòt de depann sou sitiyasyon an. 104 00:05:12,110 --> 00:05:16,840 Men, ou ap pwobableman konnen ki sa a operasyon dwa se lè lè a va rive. 105 00:05:16,840 --> 00:05:18,020 Se konsa, sa a, se fopen. 106 00:05:18,020 --> 00:05:18,930 >> Ki sa ki sou fkloz? 107 00:05:18,930 --> 00:05:21,600 Oke, trè tou senpleman, fkloz jis aksepte konsèy la dosye-a. 108 00:05:21,600 --> 00:05:24,000 Ak jan ou ta ka atann, li fèmen ki dosye-a. 109 00:05:24,000 --> 00:05:29,270 Ak yon lòt fwa nou te fèmen yon dosye, nou pa kapab fè nenpòt ki dosye plis mwen / O fonksyon, 110 00:05:29,270 --> 00:05:31,420 lekti oswa ekri, sou sa dosye. 111 00:05:31,420 --> 00:05:36,444 Nou dwe re-louvri nan ranpli yon lòt tan yo nan lòd 112 00:05:36,444 --> 00:05:38,610 yo kontinye ap travay ak li lè l sèvi avèk fonksyon yo mwen / O. 113 00:05:38,610 --> 00:05:41,520 Vle di Se konsa, nou ap fè fkloz k ap travay ak sa a dosye-a. 114 00:05:41,520 --> 00:05:44,690 Apre sa, tout sa nou bezwen pase nan se non an nan yon konsèy dosye-a. 115 00:05:44,690 --> 00:05:50,010 Se konsa, sou yon koup glisad de sa, nou fopened dosye tèks 1 dot pou lekti 116 00:05:50,010 --> 00:05:52,854 epi nou asiyen ki ranpli konsèy nan ptr1. 117 00:05:52,854 --> 00:05:55,020 Koulye a, nou te deside nou ap fè lekti soti nan ki dosye-a. 118 00:05:55,020 --> 00:05:56,561 Nou pa bezwen fè nenpòt ki plis ak li. 119 00:05:56,561 --> 00:05:58,890 Nou ka jis fkloz ptr1. 120 00:05:58,890 --> 00:06:01,950 Apre sa, Menm jan an tou, te kapab nou fkloz yo menm ki lòt. 121 00:06:01,950 --> 00:06:02,450 Tout dwa. 122 00:06:02,450 --> 00:06:03,700 Se konsa, ki nan ouvèti ak fèmti. 123 00:06:03,700 --> 00:06:05,780 Moun sa yo ki yo se de debaz la kòmanse operasyon yo. 124 00:06:05,780 --> 00:06:08,050 >> Koulye a, nou vle aktyèlman fè kèk bagay ki enteresan, 125 00:06:08,050 --> 00:06:11,940 ak fonksyon an premye ki nou pral wè ke pral fè se sa ki fgetc-- 126 00:06:11,940 --> 00:06:14,110 ranpli jwenn yon karaktè. 127 00:06:14,110 --> 00:06:17,350 Sa a ki sa fgetc jeneralman ta tradui nan. 128 00:06:17,350 --> 00:06:20,190 Objektif li yo nan lavi se yo li pèsonaj la kap vini an, 129 00:06:20,190 --> 00:06:22,079 oswa si sa a se ou trè premye rele nan fgetc 130 00:06:22,079 --> 00:06:23,870 pou yon dosye patikilye, pèsonaj la an premye. 131 00:06:23,870 --> 00:06:26,210 Men, Lè sa apre sa, ou jwenn youn nan pwochen, 132 00:06:26,210 --> 00:06:31,500 pèsonaj la trè pwochen nan ki ranpli, ak magazen li nan yon varyab karaktè. 133 00:06:31,500 --> 00:06:34,490 Kòm nou te fè isit la, Char ch egal fgetc, 134 00:06:34,490 --> 00:06:36,389 pase nan non an nan yon konsèy dosye-a. 135 00:06:36,389 --> 00:06:38,180 Yon fwa ankò, li trè enpòtan isit la yo sonje 136 00:06:38,180 --> 00:06:41,430 ke yo nan lòd yo gen operasyon sa a reyisi, 137 00:06:41,430 --> 00:06:45,690 konsèy la dosye tèt li must've te louvri pou lekti. 138 00:06:45,690 --> 00:06:50,589 Nou pa ka li yon karaktè ki sòti nan yon dosye konsèy ke nou louvri pou ekri. 139 00:06:50,589 --> 00:06:52,630 Se konsa, sa a, se youn nan la limit nan fopen, dwa? 140 00:06:52,630 --> 00:06:55,470 Nou dwe mete restriksyon sou nou menm menm ak sèlman fè 141 00:06:55,470 --> 00:06:57,710 yon operasyon ak yon sèl dosye konsèy. 142 00:06:57,710 --> 00:07:00,220 Si nou te vle pou li e pou ekri nan dosye a menm, 143 00:07:00,220 --> 00:07:03,840 nou ta gen louvri de separe endikasyon dosye a menm file-- nan 144 00:07:03,840 --> 00:07:05,670 yonn pou lekti, yonn pou ekri. 145 00:07:05,670 --> 00:07:08,400 >> Se konsa, ankò, rezon ki fè la sèlman Mwen pral mennen ki moute kounye a se 146 00:07:08,400 --> 00:07:11,920 paske si nou ap ale nan fè yon apèl fgetc, ki must've dosye konsèy 147 00:07:11,920 --> 00:07:14,172 te louvri pou lekti. 148 00:07:14,172 --> 00:07:15,880 Lè sa a, bèl tou senpleman, tout sa nou bezwen fè 149 00:07:15,880 --> 00:07:17,546 se pase nan non an nan konsèy la dosye-a. 150 00:07:17,546 --> 00:07:21,060 Se konsa, Char ch egal fgetc ptr1. 151 00:07:21,060 --> 00:07:23,200 >> Sa k ap pase yo ka resevwa nou character-- nan pwochen te 152 00:07:23,200 --> 00:07:25,575 oswa ankò, si sa a se premye nan fwa nou te fè apèl sa a, 153 00:07:25,575 --> 00:07:29,750 character-- an premye nan tou sa dosye se pwente nan pa ptr1. 154 00:07:29,750 --> 00:07:32,210 Sonje byen, sa ki te dosye 1 dot tèks. 155 00:07:32,210 --> 00:07:36,490 Li pral jwenn pèsonaj la premye nan ki epi n ap magazen li nan ch la varyab. 156 00:07:36,490 --> 00:07:37,941 Joli dwat. 157 00:07:37,941 --> 00:07:40,190 Se konsa, nou te sèlman gade twa fonksyon ak deja nou 158 00:07:40,190 --> 00:07:43,070 ka fè yon bagay bèl byen òdone. 159 00:07:43,070 --> 00:07:46,320 >> Se konsa, si nou pran kapasite sa a pou trape yon karaktè 160 00:07:46,320 --> 00:07:48,943 epi nou riban l-- pou nou kontinye resevwa karaktè 161 00:07:48,943 --> 00:07:51,390 ki sòti nan yon dosye sou yo ak sou yo ak kounye a nou over-- 162 00:07:51,390 --> 00:07:54,500 ka li chak yon sèl karaktè nan yon dosye. 163 00:07:54,500 --> 00:07:58,670 Men, si nou enprime chak karaktè imedyatman apre nou li li, 164 00:07:58,670 --> 00:08:01,960 nou te kounye a li ki sòti nan yon dosye ak enprime sa li yo nan ekran an. 165 00:08:01,960 --> 00:08:05,610 Nou te efektivman anchene ki dosye sou ekran an. 166 00:08:05,610 --> 00:08:09,670 Epi sa a, ki sa a Linux chat lòd fè. 167 00:08:09,670 --> 00:08:13,250 >> Si ou tape nan non chat nan dosye, li pral enprime soti sa ki tout antye 168 00:08:13,250 --> 00:08:15,160 nan dosye a nan fennèt tèminal ou yo. 169 00:08:15,160 --> 00:08:19,010 Se konsa, sa a ti kras bouk isit la, sèlman twa liy nan kòd, 170 00:08:19,010 --> 00:08:23,270 men li efektivman Doublon chat la lòd Linux. 171 00:08:23,270 --> 00:08:25,210 Se konsa, sentaks sa a ta ka gade yon ti kras etranj, 172 00:08:25,210 --> 00:08:26,670 men isit la nan sa k ap pase isit la. 173 00:08:26,670 --> 00:08:31,460 Pandan ke ch egal fgetc, ptr se pa egal a EOF-- li nan yon gren antye, 174 00:08:31,460 --> 00:08:34,669 men kite a kraze li desann jis se konsa li a klè sou sentaks la. 175 00:08:34,669 --> 00:08:37,169 Mwen te konsolide li pou dedomajman pou la nan espas, 176 00:08:37,169 --> 00:08:39,049 byenke li se yon ti kras syntactically difisil. 177 00:08:39,049 --> 00:08:41,194 >> Se konsa, pati sa a nan bon vèt kounye a, ki sa ki li ap fè? 178 00:08:41,194 --> 00:08:42,860 Oke, sa se sèlman rele fgetc nou an, dwa? 179 00:08:42,860 --> 00:08:44,530 Nou te wè ke anvan. 180 00:08:44,530 --> 00:08:49,500 Li nan jwenn yon sèl karaktè soti nan dosye a. 181 00:08:49,500 --> 00:08:53,220 Lè sa a, nou konpare ki pèsonaj kont èof. 182 00:08:53,220 --> 00:08:57,470 Èof se yon valè espesyal sa a, se defini nan estanda io.h, ki 183 00:08:57,470 --> 00:08:59,390 se nan fen pèsonaj dosye-a. 184 00:08:59,390 --> 00:09:03,450 Se konsa, fondamantalman sa k pral rive sa a se bouk pral li yon karaktè, 185 00:09:03,450 --> 00:09:07,445 li konpare l ak èof a, fen nan karaktè dosye-a. 186 00:09:07,445 --> 00:09:10,070 Si yo pa matche ak, se konsa nou pa gen rive jwenn nan fen dosye a, 187 00:09:10,070 --> 00:09:11,490 nou pral enprime ke karaktè deyò. 188 00:09:11,490 --> 00:09:13,740 Lè sa a, nou pral tounen nan la kòmanse nan riban an ankò. 189 00:09:13,740 --> 00:09:18,310 Nou pral jwenn yon karaktè, tcheke kont èof, enprime li soti, ak sou sa 190 00:09:18,310 --> 00:09:21,094 ak sou sa ak sou sa, loupin nan nan fason sa a 191 00:09:21,094 --> 00:09:22,760 jiskaske nou te rive nan fen a nan dosye a. 192 00:09:22,760 --> 00:09:24,593 Lè sa a, pa pwen sa, nou pral gen enprime 193 00:09:24,593 --> 00:09:26,210 soti sa ki tout antye de dosye a. 194 00:09:26,210 --> 00:09:29,450 Se konsa, ankò, nou te sèlman wè fopen, fkloz, ak fgetc 195 00:09:29,450 --> 00:09:34,950 e deja nou ka kopi yon Linux tèminal lòd. 196 00:09:34,950 --> 00:09:38,850 >> Kòm mwen te di nan kòmansman an, nou te gen fgetc ak fputc, 197 00:09:38,850 --> 00:09:41,860 ak fputc te konpayon a fonksyon nan fgetc. 198 00:09:41,860 --> 00:09:44,880 Se konsa, jan ou ta ka imajine, li se ekivalan a ekri. 199 00:09:44,880 --> 00:09:49,440 Li pèmèt nou ekri yon karaktè sèl nan yon dosye-a. 200 00:09:49,440 --> 00:09:53,290 >> Yon fwa ankò, opozisyon an ke yo te, jis tankou li te la avèk fgetc, dosye a 201 00:09:53,290 --> 00:09:56,660 ke nou ap ekri nan dwe te louvri pou ekri oswa pou ajou. 202 00:09:56,660 --> 00:10:00,820 Si nou eseye epi sèvi ak fputc sou yon dosye ke nou te louvri pou lekti, 203 00:10:00,820 --> 00:10:02,760 nou ap ale nan soufri yon ti jan nan yon erè. 204 00:10:02,760 --> 00:10:04,440 Men, apèl la se trè senp. 205 00:10:04,440 --> 00:10:08,000 kapital fputc Yon ptr2, tout ki nan pral fè se li nan 206 00:10:08,000 --> 00:10:12,040 ale nan ekri lèt la nan yon nan dosye 2 dot 207 00:10:12,040 --> 00:10:14,760 tèks, ki te non an nan la ranpli ke nou louvri, ak asiyen 208 00:10:14,760 --> 00:10:17,280 konsèy la ptr2. 209 00:10:17,280 --> 00:10:20,430 Se konsa, nou ap ale nan ekri yon kapital Yon nan pote 2 dot tèks. 210 00:10:20,430 --> 00:10:24,592 Epitou, n ap ekri yon esklamasyon lonje dwèt sou depoze 3 dot 211 00:10:24,592 --> 00:10:27,330 tèks, ki te pwente nan pa ptr3. 212 00:10:27,330 --> 00:10:29,730 Se konsa, ankò, trè dwat isit la. 213 00:10:29,730 --> 00:10:32,727 >> Men koulye a, nou ka fè yon lòt bagay. 214 00:10:32,727 --> 00:10:34,560 Nou gen egzanp sa a nou te jis ale sou 215 00:10:34,560 --> 00:10:38,950 sou ke yo te kapab replike chat la Linux lòd, yon sèl la ki simagri soti 216 00:10:38,950 --> 00:10:40,500 nan ekran an. 217 00:10:40,500 --> 00:10:43,510 Oke, kounye a ke nou gen kapasite nan li karaktè soti nan dosye 218 00:10:43,510 --> 00:10:46,590 epi ekri karaktè nan dosye, poukisa yo pa nou jis ranplase ki 219 00:10:46,590 --> 00:10:50,720 rele nan printf ak yon rele nan fputc. 220 00:10:50,720 --> 00:10:54,090 >> Epi, koulye a nou te double CP, yon trè debaz Linux lòd 221 00:10:54,090 --> 00:10:59,100 ke nou te pale osijè de fason lontan Anons sa pibliye depi nan Linux a kòmande videyo. 222 00:10:59,100 --> 00:11:01,070 Nou te efektivman double ki dwa isit la. 223 00:11:01,070 --> 00:11:04,790 Nou ap li yon karaktè ak Lè sa a nou ap ekri ke karaktè nan yon lòt dosye. 224 00:11:04,790 --> 00:11:07,660 Lekti soti nan yon dosye, ekri nan yon lòt, sou yo ak sou 225 00:11:07,660 --> 00:11:11,350 yo ak sou ankò jiskaske nou frape èof. 226 00:11:11,350 --> 00:11:14,250 Nou te gen nan fen a nan nan ranpli nou ap eseye kopi nan. 227 00:11:14,250 --> 00:11:18,500 Ak nan ke nou pral ekri tout te nan karaktè yo ki nou bezwen dosye a 228 00:11:18,500 --> 00:11:19,500 ke nou ap ekri a. 229 00:11:19,500 --> 00:11:24,270 Se konsa, sa a se CP, Linux kopi lòd la. 230 00:11:24,270 --> 00:11:26,550 >> Nan kòmansman la anpil nan videyo sa a, mwen te gen opozisyon an 231 00:11:26,550 --> 00:11:29,840 ke nou ta pale yon ti kras sou pwent. 232 00:11:29,840 --> 00:11:32,480 Isit la se espesyalman ki kote nou ap pwal pale osijè endikasyon 233 00:11:32,480 --> 00:11:34,800 nan adisyon a ranpli endikasyon. 234 00:11:34,800 --> 00:11:37,870 Se konsa, fonksyon sa a sanble kalite pè. 235 00:11:37,870 --> 00:11:39,120 Li nan te resevwa plizyè paramèt. 236 00:11:39,120 --> 00:11:40,430 Genyen yon anpil ale sou isit la. 237 00:11:40,430 --> 00:11:42,760 Genyen yon anpil nan diferan koulè ak tèks. 238 00:11:42,760 --> 00:11:47,100 Men, reyèlman, li nan jis nan jenerik vèsyon an fgetc 239 00:11:47,100 --> 00:11:50,110 ki pèmèt nou jwenn okenn kantite lajan pou enfòmasyon. 240 00:11:50,110 --> 00:11:53,560 Li kapab yon ti jan rezèvwa si nou ap ap resevwa karaktè yon sèl nan yon moman, 241 00:11:53,560 --> 00:11:55,770 iteration nan dosye a yon karaktè nan yon tan. 242 00:11:55,770 --> 00:12:00,230 Pa li ta dwe joli jwenn 100 nan yon moman oswa 500 nan yon moman? 243 00:12:00,230 --> 00:12:03,250 >> Oke, frèd ak fonksyon li yo konpayon fwrite, nou pral pale sou 244 00:12:03,250 --> 00:12:05,490 nan yon dezyèm fwa, pèmèt nou fè sèlman sa. 245 00:12:05,490 --> 00:12:08,480 Nou ka li yon kantite lajan abitrè nan enfòmasyon ki sòti nan yon dosye 246 00:12:08,480 --> 00:12:10,290 epi nou magazen li yon kote pou yon ti tan. 247 00:12:10,290 --> 00:12:12,980 Olye pou yo ke yo te kapab jis anfòm l 'nan yon varyab sèl, 248 00:12:12,980 --> 00:12:15,790 nou ta ka bezwen nan magazen li nan yon etalaj. 249 00:12:15,790 --> 00:12:19,980 Se konsa, nou pase nan kat agiman fread-- yon konsèy 250 00:12:19,980 --> 00:12:23,940 nan kote a kote nou ap ale nan magazen enfòmasyon, 251 00:12:23,940 --> 00:12:29,180 ki jan gwo chak inite nan enfòmasyon yo pral, inite ki jan anpil nan enfòmasyon 252 00:12:29,180 --> 00:12:35,192 nou vle jwenn, ak soti nan ki dosye nou vle jwenn yo. 253 00:12:35,192 --> 00:12:37,150 Pwobableman pi bon ilistre ak yon egzanp isit la. 254 00:12:37,150 --> 00:12:41,640 Se konsa nou di ke nou deklare yon etalaj de 10 nonm antye relatif. 255 00:12:41,640 --> 00:12:45,080 Nou te jis te deklare sou mòn lan pile abitrèman int ArR 10. 256 00:12:45,080 --> 00:12:46,970 Se konsa, sa a, se trè dwat. 257 00:12:46,970 --> 00:12:51,970 Koulye a, sa n ap fè si se nan frecall se nou ap li gwosè nan int 258 00:12:51,970 --> 00:12:54,180 fwa 10 bytes nan enfòmasyon. 259 00:12:54,180 --> 00:12:59,040 Kantite moun ki nan ke yo te int four-- sa a, se gwosè a nan yon nonb antye relatif nan c. 260 00:12:59,040 --> 00:13:02,790 >> Se konsa, sa n ap fè se nou ap li 40 bytes yon valè de enfòmasyon 261 00:13:02,790 --> 00:13:05,850 soti nan dosye a pwente nan pa ptr. 262 00:13:05,850 --> 00:13:08,600 E nou estoke moun 40 bytes yon kote 263 00:13:08,600 --> 00:13:12,080 kote nou te mete sou kote 40 bytes yon valè de memwa. 264 00:13:12,080 --> 00:13:15,970 Erezman, nou te deja fè ki pa deklare ArR, ki etalaj la a. 265 00:13:15,970 --> 00:13:19,770 Sa se kapab nan kenbe 10 inite kat-multiple. 266 00:13:19,770 --> 00:13:22,860 Se konsa, nan total, li ka kenbe 40 bytes yon valè de enfòmasyon. 267 00:13:22,860 --> 00:13:26,540 Apre sa, nou yo kounye a se lekti 40 bytes a enfòmasyon ki soti nan dosye a, 268 00:13:26,540 --> 00:13:30,330 epi nou ap estoke l 'nan ArR. 269 00:13:30,330 --> 00:13:35,470 >> Sonje byen soti nan videyo a sou pwent ki non an nan yon etalaj, tankou ArR, 270 00:13:35,470 --> 00:13:38,370 se reyèlman jis yon konsèy nan eleman premye li yo. 271 00:13:38,370 --> 00:13:43,680 Se konsa, lè nou pase nan ArR la, nou se, an reyalite, pase nan yon konsèy. 272 00:13:43,680 --> 00:13:46,120 >> Menm jan an tou nou ka fè sa a men nou pa fè sa nesesèman 273 00:13:46,120 --> 00:13:51,200 bezwen pou konsève pou zòn de defans nou an sou pil la. 274 00:13:51,200 --> 00:13:54,990 Nou ta ka tou dynamique asiyen yon zòn de defans tankou sa a, lè l sèvi avèk malok. 275 00:13:54,990 --> 00:13:57,340 Sonje byen, lè nou dynamique asiyen memwa, 276 00:13:57,340 --> 00:14:00,550 nou ap ekonomize l 'sou nan pil wòch, pa chemine a. 277 00:14:00,550 --> 00:14:02,110 Men, li la toujou yon zòn de defans. 278 00:14:02,110 --> 00:14:06,810 >> Li toujou, nan ka sa a, se kenbe 640 bytes nan enfòmasyon 279 00:14:06,810 --> 00:14:09,230 paske yon doub pran moute uit bytes. 280 00:14:09,230 --> 00:14:11,570 Apre sa, nou ap mande pou 80 nan yo. 281 00:14:11,570 --> 00:14:13,770 Nou vle gen espas yo kenbe 80 double. 282 00:14:13,770 --> 00:14:17,210 Se konsa, 80 fwa 8 se 640 bytes enfòmasyon. 283 00:14:17,210 --> 00:14:21,880 Epi sa rele nan frèd se kolekte 640 bytes nan enfòmasyon 284 00:14:21,880 --> 00:14:27,770 soti nan dosye a pwente nan pa ptr epi estoke li kounye a nan arr2. 285 00:14:27,770 --> 00:14:32,770 >> Koulye a, nou kapab tou trete frèd jis tankou yon rele nan fgetc. 286 00:14:32,770 --> 00:14:37,140 Nan ka sa a, nou ap jis ap eseye jwenn youn karaktè soti nan dosye a. 287 00:14:37,140 --> 00:14:40,070 Apre sa, nou pa bezwen yon etalaj yo kenbe yon karaktè. 288 00:14:40,070 --> 00:14:43,170 Nou ka jis magazen li nan yon varyab karaktè. 289 00:14:43,170 --> 00:14:46,390 >> Trape an, menm si, se ke lè nou jis gen yon varyab, 290 00:14:46,390 --> 00:14:50,290 nou bezwen pase nan la adrès nan varyab sa 291 00:14:50,290 --> 00:14:52,550 paske sonje nan ki premye agiman frèd 292 00:14:52,550 --> 00:14:59,210 se yon konsèy nan kote a ak memwa kote nou vle nan magazen enfòmasyon an. 293 00:14:59,210 --> 00:15:01,550 Yon fwa ankò, non an nan yon etalaj se yon konsèy. 294 00:15:01,550 --> 00:15:04,200 Se konsa, nou pa bezwen fè etalaj comercial. 295 00:15:04,200 --> 00:15:07,270 Men, c, pèsonaj la c isit la, se pa yon etalaj. 296 00:15:07,270 --> 00:15:08,390 Se jis nan yon varyab. 297 00:15:08,390 --> 00:15:11,840 Se konsa, nou bezwen pase yon comercial c yo endike 298 00:15:11,840 --> 00:15:15,350 ki sa a, se adrès la kote nou vle nan magazen sa a multiple youn nan enfòmasyon, 299 00:15:15,350 --> 00:15:20,479 sa a karaktè yon sèl ki nou ap kolekte soti nan ptr. 300 00:15:20,479 --> 00:15:22,270 Fwrite-- mwen pral ale nan sa a yon ti kras plis 301 00:15:22,270 --> 00:15:25,440 quickly-- se bèl anpil nan ekivalan egzak nan frèd 302 00:15:25,440 --> 00:15:27,720 eksepte li a pou ekri olye pou yo lekti, jis 303 00:15:27,720 --> 00:15:31,610 tankou other-- nan nou te gen louvri ak fèmen, jwenn yon karaktè, 304 00:15:31,610 --> 00:15:32,530 ekri yon karaktè. 305 00:15:32,530 --> 00:15:35,040 Kounye a li nan jwenn abitrè kantite lajan pou enfòmasyon, 306 00:15:35,040 --> 00:15:37,170 dwat kantite lajan abitrè pou enfòmasyon yo. 307 00:15:37,170 --> 00:15:39,790 Se konsa, jis tankou anvan, nou kapab gen yon etalaj de nonm antye relatif 10 308 00:15:39,790 --> 00:15:43,210 kote nou deja genyen enfòmasyon ki estoke, petèt. 309 00:15:43,210 --> 00:15:46,580 >> Li te pwobableman kèk liy nan kòd ki ta dwe ale ant de sa yo 310 00:15:46,580 --> 00:15:49,990 kote mwen ranpli vizitè ki s ak yon bagay ki gen sans. 311 00:15:49,990 --> 00:15:51,880 Mwen ranpli li ak 10 nonm antye relatif diferan. 312 00:15:51,880 --> 00:15:54,920 Ak olye pou, ki sa mwen se fè ap ekri soti nan ArR 313 00:15:54,920 --> 00:15:58,600 ak ranmase enfòmasyon ki soti nan ArR. 314 00:15:58,600 --> 00:16:02,390 Apre sa, mwen ap pran enfòmasyon ki epi mete l 'nan dosye a. 315 00:16:02,390 --> 00:16:05,410 >> Se konsa, olye pou yo ke yo te soti nan li dosye a nan zòn de defans la, 316 00:16:05,410 --> 00:16:08,790 nou ap kounye a pral soti nan tanpon nan dosye a. 317 00:16:08,790 --> 00:16:10,580 Se konsa, li nan jis ranvèse a. 318 00:16:10,580 --> 00:16:16,680 Se konsa, ankò, jis tankou anvan, nou kapab yo te genyen tou yon moso nan memwa pil wòch 319 00:16:16,680 --> 00:16:19,600 ke nou te dynamique resevwa lajan pou li epi li soti nan ki 320 00:16:19,600 --> 00:16:21,570 epi ekri ki nan dosye a. 321 00:16:21,570 --> 00:16:24,900 >> Apre sa, nou yo te genyen tou yon varyab sèl ki kapab kenbe yon sèl multiple 322 00:16:24,900 --> 00:16:27,200 nan enfòmasyon, tankou yon karaktè. 323 00:16:27,200 --> 00:16:29,830 Men, ankò, nou bezwen pase nan adrès ki nan varyab sa 324 00:16:29,830 --> 00:16:31,840 lè nou vle li soti nan li. 325 00:16:31,840 --> 00:16:35,280 Se konsa, nou ka ekri enfòmasyon ki nou jwenn nan adrès ki 326 00:16:35,280 --> 00:16:39,050 konsèy la dosye, ptr. 327 00:16:39,050 --> 00:16:41,630 >> Genyen anpil lòt gwo dosye mwen / O fonksyon 328 00:16:41,630 --> 00:16:44,650 ki fè divès kalite bagay sa yo san konte yo menm ki nou te te pale osijè de jodi a. 329 00:16:44,650 --> 00:16:46,450 Yon koup nan yo menm ki ou ta ka jwenn itil 330 00:16:46,450 --> 00:16:50,840 se fje ak fputs, ki se ekivalan a 331 00:16:50,840 --> 00:16:56,190 a fgetc ak fputc men pou lekti yon afè yon sèl ki sòti nan yon dosye-a. 332 00:16:56,190 --> 00:16:59,020 Olye pou yo yon karaktè sèl, li pral li yon fisèl tout antye. 333 00:16:59,020 --> 00:17:02,940 fprintf, ki fondamantalman pèmèt ou sèvi ak printf yo ekri nan pote. 334 00:17:02,940 --> 00:17:05,619 Se konsa, jis tankou ou ka fè nan varyab sibstitisyon lè l sèvi avèk 335 00:17:05,619 --> 00:17:09,900 m nan placeholders pousan ak pousan d, ak sou sa, ak printf 336 00:17:09,900 --> 00:17:14,690 ou ka Menm jan an tou pran an fisèl printf ekri an lèt detache yon bagay ak 337 00:17:14,690 --> 00:17:16,800 tankou sa a yon dosye-a. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- si ou gen yon jwè DVD se analoji a Mwen konn sèvi ak isit lan-- 339 00:17:20,720 --> 00:17:23,109 se sòt de tankou lè l sèvi avèk ou remonte ak vit pou pi devan 340 00:17:23,109 --> 00:17:25,819 bouton fè mouvman fim nan. 341 00:17:25,819 --> 00:17:28,369 Menm jan an tou, ou ka deplase nan dosye a. 342 00:17:28,369 --> 00:17:30,250 Youn nan bagay ki anndan ke estrikti dosye 343 00:17:30,250 --> 00:17:34,270 ki c kreye pou ou se yon endikatè nan kote ou se nan dosye a. 344 00:17:34,270 --> 00:17:36,420 Èske w se nan trè an kòmanse, nan multiple zewo? 345 00:17:36,420 --> 00:17:39,290 Èske w se nan multiple 100, multiple 1,000, ak sou sa? 346 00:17:39,290 --> 00:17:44,340 Ou kapab sèvi ak fik abitrèman deplase ki endikatè pou pi devan oswa dèyè. 347 00:17:44,340 --> 00:17:46,744 >> Apre sa, ftell, ankò menm jan ak yon jwè DVD, 348 00:17:46,744 --> 00:17:49,660 se tankou yon ti revèy ki di w kouman anpil minit ak segonn ou 349 00:17:49,660 --> 00:17:52,480 se nan yon fim patikilye. 350 00:17:52,480 --> 00:17:56,990 Menm jan tou, ftell di ou ki jan anpil bytes ou se nan dosye a. 351 00:17:56,990 --> 00:18:00,210 feof se yon vèsyon diferan a detekte si wi ou non ou te 352 00:18:00,210 --> 00:18:01,700 te rive nan fen a nan dosye a. 353 00:18:01,700 --> 00:18:03,600 Apre sa, ferror se yon fonksyon ke ou ka itilize 354 00:18:03,600 --> 00:18:06,959 si wi ou non yo detekte yon bagay gen ale mal k ap travay ak yon dosye-a. 355 00:18:06,959 --> 00:18:08,750 Yon fwa ankò, sa a se jis grate sifas la. 356 00:18:08,750 --> 00:18:12,730 Genyen toujou anpil plis dosye mwen / O fonksyon nan nan estanda io.h. 357 00:18:12,730 --> 00:18:16,620 Men, sa a pwal pwobableman fè ou jwenn te kòmanse travay ak endikasyon dosye-a. 358 00:18:16,620 --> 00:18:17,640 Mwen se Doug Lloyd. 359 00:18:17,640 --> 00:18:19,750 Sa a se CS50. 360 00:18:19,750 --> 00:18:21,669