1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> SPEAKER: S'issa, huwa probabbli li ħafna mill-programmi tiegħek 3 00:00:07,870 --> 00:00:10,170 Kien daqsxejn effimeru. 4 00:00:10,170 --> 00:00:13,310 Inti tmexxi programm bħal Mario jew greedy. 5 00:00:13,310 --> 00:00:17,350 Hija ma xi ħaġa, forsi tinkoraġġixxi l-utent għal xi informazzjoni, 6 00:00:17,350 --> 00:00:20,400 jistampaw xi output għall-iskrin, iżda mbagħad meta program tiegħek huwa fuq, 7 00:00:20,400 --> 00:00:23,252 hemm verament ebda evidenza hemmhekk kien qatt run fl-ewwel post. 8 00:00:23,252 --> 00:00:25,960 I mean, żgur, inti jista 'jkollok xellug hija miftuħa fit-tieqa terminal, 9 00:00:25,960 --> 00:00:29,770 imma jekk inti ċar l-iskrin tiegħek, hemm verament ebda evidenza li kien jeżisti. 10 00:00:29,770 --> 00:00:33,720 Aħna ma jkollhom mezz ta 'ħażna informazzjoni persistenti, informazzjoni 11 00:00:33,720 --> 00:00:36,890 li teżisti wara tagħna programm tkun waqfet taħdem, 12 00:00:36,890 --> 00:00:39,241 jew aħna ma sa dan il-punt. 13 00:00:39,241 --> 00:00:41,490 Fortunatament għalkemm, c ma tagħtina l-abbiltà 14 00:00:41,490 --> 00:00:44,220 biex jagħmlu dan billi jimplimentaw xi ħaġa imsejħa 15 00:00:44,220 --> 00:00:48,330 fajl, struttura li bażikament jirrappreżenta fajl li inti doppju 16 00:00:48,330 --> 00:00:53,826 ikklikkja fuq il-kompjuter tiegħek, jekk int użat għal ambjent grafika user. 17 00:00:53,826 --> 00:00:55,700 Ġeneralment meta jsir xogħol ma ċ, aħna qed attwalment 18 00:00:55,700 --> 00:00:59,965 ser tkun ħidma mal pointers li files-- fajl stars-- 19 00:00:59,965 --> 00:01:02,090 ħlief għal ftit meta nitkellmu dwar koppja 20 00:01:02,090 --> 00:01:04,560 tal-funzjonijiet li jaħdmu ma 'fajl pointers. 21 00:01:04,560 --> 00:01:08,990 Inti ma għandekx bżonn li jkollhom verament dug wisq fil-fond fil-fehim pointers 22 00:01:08,990 --> 00:01:09,730 infushom. 23 00:01:09,730 --> 00:01:12,870 Hemm daqsxejn teeny ftit fejn aħna se nitkellmu dwarhom, 24 00:01:12,870 --> 00:01:18,090 iżda ġeneralment fajl pointers u pointers, filwaqt interrelatati, 25 00:01:18,090 --> 00:01:20,290 mhumiex eżattament l-istess ħaġa. 26 00:01:20,290 --> 00:01:22,440 >> Issa dak li għandi jfisser meta I say data persistenti? 27 00:01:22,440 --> 00:01:23,650 Xi tkun dejta persistenti? 28 00:01:23,650 --> 00:01:25,232 Għalfejn nagħmlu tinteressana? 29 00:01:25,232 --> 00:01:27,190 Say, per eżempju, li int tmexxi programm 30 00:01:27,190 --> 00:01:29,850 jew inti ħadthom miktuba mill-ġdid ta ' programm li l-logħba, 31 00:01:29,850 --> 00:01:32,960 u inti tixtieq li jżommu rekord ta 'kollha ta' jiċċaqlaq l-utent 32 00:01:32,960 --> 00:01:36,620 b'tali mod li forsi jekk xi ħaġa tmur ħażin, inti tista 'tirrevedi l-fajl wara l-logħba. 33 00:01:36,620 --> 00:01:39,970 Dak hu li rridu nfissru meta aħna jitkellmu dwar data persistenti. 34 00:01:39,970 --> 00:01:43,930 >> Fil-kors ta 'tmexxija tiegħek programm, fajl hija maħluqa. 35 00:01:43,930 --> 00:01:45,680 U meta program tiegħek tkun waqfet taħdem, 36 00:01:45,680 --> 00:01:48,689 dan il-fajl tkun għadha teżisti fis-sistema tiegħek. 37 00:01:48,689 --> 00:01:50,230 U nistgħu nħarsu lejn din u teżaminaha. 38 00:01:50,230 --> 00:01:53,670 U għalhekk dak il-programm ikun stabbilit li ħolqu xi data persistenti, 39 00:01:53,670 --> 00:01:57,390 Jeżistu data wara l-programm tkun spiċċat taħdem. 40 00:01:57,390 --> 00:02:02,320 >> Issa kollha ta 'dawn il-funzjonijiet li jaħdmu ma ħolqien ta 'fajls u timmanipula 41 00:02:02,320 --> 00:02:04,940 minnhom fil-modi varji jgħixu fl io.h standard, 42 00:02:04,940 --> 00:02:08,210 li huwa fajl header li inti ħadthom probabbli ġiet lira 43 00:02:08,210 --> 00:02:10,910 inkluż fil-quċċata tal pretty ħafna kollha ta 'programmi tiegħek 44 00:02:10,910 --> 00:02:14,130 għax fih wieħed mill- funzjonijiet l-aktar utli għalina, 45 00:02:14,130 --> 00:02:16,130 printf, li wkoll tikri jgħix fil io.h. standard 46 00:02:16,130 --> 00:02:20,400 Allura inti m'għandekx bżonn lira jinkludu xi fajls addizzjonali probabbilment 47 00:02:20,400 --> 00:02:23,540 sabiex jaħdmu ma 'fajl pointers. 48 00:02:23,540 --> 00:02:29,980 >> Issa kull funzjoni waħda fajl pointer, jew kull fajl waħdieni I / O, il-produzzjoni input 49 00:02:29,980 --> 00:02:33,310 , il-funzjoni taċċetta bħala wieħed tal parametri jew inputs tagħha 50 00:02:33,310 --> 00:02:35,822 a Pointer fajl ħlief għal wieħed, fopen, li 51 00:02:35,822 --> 00:02:38,280 huwa dak li tuża biex tikseb l-fajl pointer fl-ewwel post. 52 00:02:38,280 --> 00:02:41,010 Iżda wara li tkun ħadthom fetħet il- fajl u ikollok fajl pointers, 53 00:02:41,010 --> 00:02:43,510 inti tista 'mbagħad tgħaddi minnhom bħala argumenti mad-diversi funzjonijiet 54 00:02:43,510 --> 00:02:46,720 aħna qed tmur biex jitkellmu dwar illum, kif ukoll ħafna oħrajn 55 00:02:46,720 --> 00:02:48,520 sabiex inti tista 'taħdem ma' fajls. 56 00:02:48,520 --> 00:02:50,980 >> Allura hemm sitta pretty dawk bażiku komuni 57 00:02:50,980 --> 00:02:52,870 li aħna qed tmur biex jitkellmu dwar llum. 58 00:02:52,870 --> 00:02:57,160 fopen u ħbieb tagħha fclose funzjoni, fgetc 59 00:02:57,160 --> 00:03:02,670 u fputc funzjoni ħbieb tagħha, u fread u l-funzjoni ħbieb tiegħu, 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 Mela ejja tikseb id-dritt fis dan. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- dak ma tagħmel? 63 00:03:07,050 --> 00:03:10,050 Ukoll, tiftaħ fajl u jagħtik pointer fajl lilha, 64 00:03:10,050 --> 00:03:14,000 sabiex inti tista 'mbagħad jużaw dak fajl pointer bħala argument 65 00:03:14,000 --> 00:03:16,730 għal xi wieħed minn I / O funzjonijiet fajl oħra. 66 00:03:16,730 --> 00:03:19,100 L-aktar ħaġa importanti li niftakar fopen 67 00:03:19,100 --> 00:03:24,222 huwa li wara li tkun fetħet il- fajl jew għamlet sejħa bħal dak hawn, 68 00:03:24,222 --> 00:03:26,930 għandek bżonn biex jivverifika sabiex ikun żgur li l-pointer li inti marret lura 69 00:03:26,930 --> 00:03:28,320 mhuwiex ugwali għal nulla. 70 00:03:28,320 --> 00:03:31,320 Jekk int ma jaraw l-video fuq pointers, dan ma jista 'jagħmel sens. 71 00:03:31,320 --> 00:03:35,639 Imma jekk inti tipprova u dereference sejħa lura pointer null, 72 00:03:35,639 --> 00:03:38,180 programm tiegħek probabbilment se jsofru segmentazzjoni [inaudible]. 73 00:03:38,180 --> 00:03:40,540 Aħna tixtieq li tagħmel ċert li aħna ltqajna lura pointer leġittimu. 74 00:03:40,540 --> 00:03:43,665 Il-maġġoranza vasta tal-ħin aħna se gotten pointer leġittimu lura 75 00:03:43,665 --> 00:03:45,280 u mhux se tkun problema. 76 00:03:45,280 --> 00:03:46,760 >> Allura kif nistgħu jagħmlu sejħa għal fopen? 77 00:03:46,760 --> 00:03:48,051 Huwa jistenna pretty ħafna bħal dan. 78 00:03:48,051 --> 00:03:52,690 File star ptr-- PTR tkun ġeneriku isem għal fajl Pointer fopen 79 00:03:52,690 --> 00:03:57,300 u aħna jgħaddu f'żewġ affarijiet, isem fajl u operazzjoni rridu li jagħmlu. 80 00:03:57,300 --> 00:04:01,690 Allura aħna jista 'jkollhom sejħa li qisu this-- fajl star PTR 1 huwa ugwali għal fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 U l-operazzjoni stajt magħżul huwa r. 83 00:04:07,020 --> 00:04:08,639 >> Allura dak li taħseb r huwa hawnhekk? 84 00:04:08,639 --> 00:04:11,180 X'inhuma t-tipi ta 'affarijiet aħna jista 'jkun kapaċi li jagħmlu għall-fajls? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 Allura r huwa l-operazzjoni li aħna jagħżlu meta irridu li jaqra fajl. 87 00:04:17,500 --> 00:04:20,260 Allura aħna se bażikament meta nagħmlu sejħa bħal dan 88 00:04:20,260 --> 00:04:25,440 qegħdin ikunu ruħna pointer fajl tali li nistgħu mbagħad jaqra l-informazzjoni 89 00:04:25,440 --> 00:04:27,770 minn file1.txt. 90 00:04:27,770 --> 00:04:34,190 >> Bl-istess mod, nistgħu tiftaħ fajl 2.txt għall-kitba u hekk nistgħu jgħaddu ptr2, 91 00:04:34,190 --> 00:04:38,210 il pointer fajl stajt maħluqa hawnhekk, bħala argument għal kull funzjoni li 92 00:04:38,210 --> 00:04:40,080 jikteb informazzjoni għall-fajl. 93 00:04:40,080 --> 00:04:43,767 U simili għall-kitba, hemm ukoll l-għażla li tehmeż, a. 94 00:04:43,767 --> 00:04:45,600 Id-differenza bejn miktub u jpoġġu 95 00:04:45,600 --> 00:04:50,920 tkun li meta tikteb għall-fajl, jekk inti tagħmel sejħa biex fopen għall-kitba 96 00:04:50,920 --> 00:04:54,761 u dan il-fajl diġà jeżisti, huwa ser jissostitwixxu l-fajl kollu. 97 00:04:54,761 --> 00:04:56,510 Li għaddej biex tibda fil-bidu nett, 98 00:04:56,510 --> 00:04:58,820 tħassar l-informazzjoni kollha li diġà hemm. 99 00:04:58,820 --> 00:05:02,210 >> Billi jekk inti tiftaħ lilha għall jpoġġu, se jmorru sa l-aħħar tal-fajl 100 00:05:02,210 --> 00:05:04,340 jekk diġà hemm test fil jew informazzjoni fiha, 101 00:05:04,340 --> 00:05:06,040 u mbagħad se tibda miktub minn hemm. 102 00:05:06,040 --> 00:05:08,570 Allura inti mhux se jitlef l-ebda mill- informazzjoni li inti ghamilt qabel. 103 00:05:08,570 --> 00:05:12,110 Jekk inti tixtieq li jiktbu jew tehmeż tip ta 'tiddependi fuq is-sitwazzjoni. 104 00:05:12,110 --> 00:05:16,840 Imma inti probabilment taf x'inhuma l- operazzjoni dritt huwa meta jasal iż-żmien. 105 00:05:16,840 --> 00:05:18,020 Allura dak fopen. 106 00:05:18,020 --> 00:05:18,930 >> Xi ngħidu dwar fclose? 107 00:05:18,930 --> 00:05:21,600 Well, pretty sempliċi, fclose biss taċċetta l-pointer fajl. 108 00:05:21,600 --> 00:05:24,000 U kif inti tista 'tistenna, li jagħlaq dan il-fajl. 109 00:05:24,000 --> 00:05:29,270 U ladarba aħna ħadthom magħluqa fajl, ma nistgħux iwettaq kwalunkwe I / funzjonijiet O fajl aktar, 110 00:05:29,270 --> 00:05:31,420 qari jew bil-miktub, fuq dan il-fajl. 111 00:05:31,420 --> 00:05:36,444 Aħna jkollhom jerġgħu jiftħu l- fajl ieħor żmien sabiex 112 00:05:36,444 --> 00:05:38,610 biex tkompli taħdem ma billi tuża l-funzjonijiet I / O. 113 00:05:38,610 --> 00:05:41,520 Mezzi hekk fclose aħna qed isir ħidma ma dan il-fajl. 114 00:05:41,520 --> 00:05:44,690 U kollha għandna bżonn li jgħaddu fil hija l-isem ta 'pointer fajl. 115 00:05:44,690 --> 00:05:50,010 Allura fuq koppja slides ilu, aħna fopened fajl 1 dot test għall-qari 116 00:05:50,010 --> 00:05:52,854 u aħna assenjati li fajl pointer li ptr1. 117 00:05:52,854 --> 00:05:55,020 Issa aħna iddeċidejt aħna isir qari minn dan il-fajl. 118 00:05:55,020 --> 00:05:56,561 Aħna ma bżonn tagħmel xi aktar magħha. 119 00:05:56,561 --> 00:05:58,890 Nistgħu ptr1 biss fclose. 120 00:05:58,890 --> 00:06:01,950 U l-istess, nistgħu fclose-oħrajn. 121 00:06:01,950 --> 00:06:02,450 Kull dritt. 122 00:06:02,450 --> 00:06:03,700 Allura dak ftuħ u għeluq. 123 00:06:03,700 --> 00:06:05,780 Dawk huma ż-żewġ bażiku operazzjonijiet tal-bidu. 124 00:06:05,780 --> 00:06:08,050 >> Issa rridu li attwalment jagħmlu xi għalf interessanti, 125 00:06:08,050 --> 00:06:11,940 u l-ewwel funzjoni li aħna ser tara li se tagħmel dan huwa fgetc-- 126 00:06:11,940 --> 00:06:14,110 fajl tikseb karattru. 127 00:06:14,110 --> 00:06:17,350 Dak hu fgetc ġeneralment tkun tfisser. 128 00:06:17,350 --> 00:06:20,190 Għan tagħha fil-ħajja huwa li aqra l-karattru li jmiss, 129 00:06:20,190 --> 00:06:22,079 jew jekk dan huwa ħafna tiegħek ewwel sejħa għall fgetc 130 00:06:22,079 --> 00:06:23,870 għal fajl partikolari, l-ewwel karattru. 131 00:06:23,870 --> 00:06:26,210 Iżda mbagħad wara dan, ikollok dak li jmiss, 132 00:06:26,210 --> 00:06:31,500 il-karattru stess li jmiss ta 'dan il-fajl, u tirreġistrahom ġo varjabbli karattru. 133 00:06:31,500 --> 00:06:34,490 Kif aħna ghamilt hawn, ch char ugwali fgetc, 134 00:06:34,490 --> 00:06:36,389 jgħaddu fl-isem ta 'pointer fajl. 135 00:06:36,389 --> 00:06:38,180 Għal darb'oħra, huwa ferm importanti li wieħed jiftakar hawnhekk 136 00:06:38,180 --> 00:06:41,430 li sabiex ikollhom din l-operazzjoni tirnexxi, 137 00:06:41,430 --> 00:06:45,690 il pointer fajl innifsu must've infetħet għall-qari. 138 00:06:45,690 --> 00:06:50,589 Aħna ma tistax taqra karattru minn fajl pointer li aħna miftuħa għall-kitba. 139 00:06:50,589 --> 00:06:52,630 B'tali mod li wieħed mill- limitazzjonijiet ta 'fopen, id-dritt? 140 00:06:52,630 --> 00:06:55,470 Irridu jirrestrinġu lilna nfusna biss jwettqu 141 00:06:55,470 --> 00:06:57,710 operazzjoni waħda mal-fajl pointer waħda. 142 00:06:57,710 --> 00:07:00,220 Jekk ridna biex jaqraw u jiktbu mill-istess fajl, 143 00:07:00,220 --> 00:07:03,840 rridu naraw miftuħa żewġ separati fajl indikaturi għall-istess file-- 144 00:07:03,840 --> 00:07:05,670 wieħed għall-qari, wieħed għall-kitba. 145 00:07:05,670 --> 00:07:08,400 >> Għalhekk għal darb'oħra, l-unika raġuni I idaħħlu dak up issa huwa 146 00:07:08,400 --> 00:07:11,920 għaliex jekk aħna qed tmur biex tagħmel sejħa li fgetc, li must've fajl pointer 147 00:07:11,920 --> 00:07:14,172 infetħet għall-qari. 148 00:07:14,172 --> 00:07:15,880 U mbagħad pretty sempliċi, kollha għandna bżonn tagħmel 149 00:07:15,880 --> 00:07:17,546 huwa jgħaddi fl-isem tal-pointer fajl. 150 00:07:17,546 --> 00:07:21,060 Allura ch char ugwali ptr1 fgetc. 151 00:07:21,060 --> 00:07:23,200 >> Li għaddej biex nikseb us l character-- jmiss 152 00:07:23,200 --> 00:07:25,575 jew għal darb'oħra, jekk dan huwa l-ewwel iż-żmien aħna ħadna din is-sejħa, 153 00:07:25,575 --> 00:07:29,750 l-ewwel character-- ta 'kwalunkwe fajl huwa indikat permezz ptr1. 154 00:07:29,750 --> 00:07:32,210 Ifakkar li dan kien fajl 1 dot test. 155 00:07:32,210 --> 00:07:36,490 Hija ser tingħata l-ewwel tip ta 'dak u aħna ser jaħżnu fil-ch varjabbli. 156 00:07:36,490 --> 00:07:37,941 Pretty sempliċi. 157 00:07:37,941 --> 00:07:40,190 Allura konna biss ħares lejn tliet funzjonijiet u diġà għandna 158 00:07:40,190 --> 00:07:43,070 tista 'tagħmel xi ħaġa pretty pulita. 159 00:07:43,070 --> 00:07:46,320 >> Mela jekk nieħdu din il-ħila ta 'jkollna karattru 160 00:07:46,320 --> 00:07:48,943 u aħna loop it-- hekk aħna tkompli tikseb karattri 161 00:07:48,943 --> 00:07:51,390 minn fajl fuq u aktar u over-- issa aħna 162 00:07:51,390 --> 00:07:54,500 tista 'taqra kull wieħed karattru ta 'fajl. 163 00:07:54,500 --> 00:07:58,670 U jekk aħna istampar kull karattru immedjatament wara naqraw dan, 164 00:07:58,670 --> 00:08:01,960 aħna issa tinqara minn fajl u stampati kontenut tiegħu għall-iskrin. 165 00:08:01,960 --> 00:08:05,610 Imxejna effettiv concatenated dan il-fajl fuq l-iskrin. 166 00:08:05,610 --> 00:08:09,670 U dan huwa dak li l- Linux qattus kmand ma. 167 00:08:09,670 --> 00:08:13,250 >> Jekk inti tip qattus fl-isem fajl, se jistampa l-kontenut kollu 168 00:08:13,250 --> 00:08:15,160 tal-fajl fil-tieqa terminal tiegħek. 169 00:08:15,160 --> 00:08:19,010 U hekk dan loop ftit hawn, biss tliet linji ta 'kodiċi, 170 00:08:19,010 --> 00:08:23,270 iżda effettivament duplikati il-qattus kmand Linux. 171 00:08:23,270 --> 00:08:25,210 Allura dan sintassi jista tfittex ftit stramb, 172 00:08:25,210 --> 00:08:26,670 iżda hawnhekk huwa dak li qed jiġri hawn. 173 00:08:26,670 --> 00:08:31,460 Filwaqt ch ugwali fgetc, PTR mhuwiex daqs EOF-- huwa f'gidma kollu, 174 00:08:31,460 --> 00:08:34,669 imma ejja din tinqasam biss dan huwa ċar fuq il-sintassi. 175 00:08:34,669 --> 00:08:37,169 Stajt konsolidati it għall-fini ta 'spazju, 176 00:08:37,169 --> 00:08:39,049 għalkemm huwa ftit sintattikament delikata. 177 00:08:39,049 --> 00:08:41,194 >> Allura din il-parti bi dritt aħdar issa, dak li huwa dan isir? 178 00:08:41,194 --> 00:08:42,860 Ukoll, li jinsab biss sejħa fgetc tagħna, id-dritt? 179 00:08:42,860 --> 00:08:44,530 Rajna li qabel. 180 00:08:44,530 --> 00:08:49,500 Huwa jikseb wieħed karattru mill-fajl. 181 00:08:49,500 --> 00:08:53,220 Imbagħad inqabblu li karattru kontra EOF. 182 00:08:53,220 --> 00:08:57,470 EOF huwa valur speċjali li l- definit fl io.h standard, li 183 00:08:57,470 --> 00:08:59,390 hija t-tmiem ta 'karattru fajl. 184 00:08:59,390 --> 00:09:03,450 Allura bażikament dak li jiġri huwa dan loop se jaqra karattru, 185 00:09:03,450 --> 00:09:07,445 titqabbel ma EOF, l- aħħar ta 'karattru fajl. 186 00:09:07,445 --> 00:09:10,070 Jekk dawn ma jaqblux, hekk aħna ma laħqu t-tmiem tal-fajl, 187 00:09:10,070 --> 00:09:11,490 aħna ser jistampa dan il-karattru out. 188 00:09:11,490 --> 00:09:13,740 Imbagħad aħna ser imorru lura għall- bidu tal-linja mill-ġdid. 189 00:09:13,740 --> 00:09:18,310 Aħna ser jiksbu karattru, check kontra EOF, ipprintjaha, u l-bqija 190 00:09:18,310 --> 00:09:21,094 u hekk u hekk, looping permezz b'dan il-mod 191 00:09:21,094 --> 00:09:22,760 sakemm konna laħqu t-tmiem tal-fajl. 192 00:09:22,760 --> 00:09:24,593 U mbagħad minn dak il-punt, se jkollna stampat 193 00:09:24,593 --> 00:09:26,210 l-kontenut kollu tal-fajl. 194 00:09:26,210 --> 00:09:29,450 Għalhekk għal darb'oħra, konna biss raw fopen, fclose, u fgetc 195 00:09:29,450 --> 00:09:34,950 u diġà nistgħu duplikat kmand terminal Linux. 196 00:09:34,950 --> 00:09:38,850 >> Kif għidt fil-bidu, kellna fgetc u fputc, 197 00:09:38,850 --> 00:09:41,860 u fputc kienet l-ħbieb funzjoni ta 'fgetc. 198 00:09:41,860 --> 00:09:44,880 U hekk, kif inti tista 'timmaġina, huwa l-kitba ekwivalenti. 199 00:09:44,880 --> 00:09:49,440 Dan jippermetti li jiktbu karattru wieħed għall-fajl. 200 00:09:49,440 --> 00:09:53,290 >> Għal darb'oħra, il-twiddiba li jkunu, just bhalu kien bil fgetc, il-fajl 201 00:09:53,290 --> 00:09:56,660 li aħna qed miktub lill must've kien miftuħa għall-kitba jew għat jpoġġu. 202 00:09:56,660 --> 00:10:00,820 Jekk nippruvaw u l-użu fputc fuq fajl li konna miftuħa għall-qari, 203 00:10:00,820 --> 00:10:02,760 aħna qed tmur biex jsofru daqsxejn ta 'żball. 204 00:10:02,760 --> 00:10:04,440 Iżda l-sejħa hija pjuttost sempliċi. 205 00:10:04,440 --> 00:10:08,000 kapital fputc A ptr2, Kollha li għaddej biex tagħmel huwa huwa 206 00:10:08,000 --> 00:10:12,040 ser jikteb l-ittra f 'A fil-fajl 2 dot 207 00:10:12,040 --> 00:10:14,760 test, li kien l-isem tal- fajl li aħna miftuħa u assenjati 208 00:10:14,760 --> 00:10:17,280 l-pointer li ptr2. 209 00:10:17,280 --> 00:10:20,430 Allura aħna qed tmur biex jiktbu kapital A għall-fajl 2. dot test. 210 00:10:20,430 --> 00:10:24,592 U aħna ser jiktbu exclamation punt għall-fajl 3 dot 211 00:10:24,592 --> 00:10:27,330 test, li ġie indikat mill ptr3. 212 00:10:27,330 --> 00:10:29,730 Għalhekk għal darb'oħra, pjuttost sempliċi hawn. 213 00:10:29,730 --> 00:10:32,727 >> Imma issa nistgħu nagħmlu ħaġa oħra. 214 00:10:32,727 --> 00:10:34,560 Għandna dan l-eżempju konna biss jmorru fuq 215 00:10:34,560 --> 00:10:38,950 dwar il-kapaċità li tiġi replikata l-qattus Linux kmand, il-wieħed li tistampa 216 00:10:38,950 --> 00:10:40,500 għall-iskrin. 217 00:10:40,500 --> 00:10:43,510 Ukoll, issa li għandna l-ħila li jaqra karattri mill-fajls 218 00:10:43,510 --> 00:10:46,590 u jiktbu karattri għall-fajls, għaliex ma aħna biss tissostitwixxi dik 219 00:10:46,590 --> 00:10:50,720 sejħa biex printf ma 'sejħa għal fputc. 220 00:10:50,720 --> 00:10:54,090 >> U issa konna idduplikata cp, kmand bażika ħafna Linux 221 00:10:54,090 --> 00:10:59,100 li tkellimna dwar l bogħod ilu fil-Linux jikkmanda video. 222 00:10:59,100 --> 00:11:01,070 Imxejna effettiv duplikata dan id-dritt hawn. 223 00:11:01,070 --> 00:11:04,790 We qed taqra karattru u allura aħna qed miktub li karattru għall-fajl ieħor. 224 00:11:04,790 --> 00:11:07,660 Qari minn wieħed fajl, kitba għall-ieħor, aktar u aktar 225 00:11:07,660 --> 00:11:11,350 u aktar mill-ġdid sakemm aħna hit EOF. 226 00:11:11,350 --> 00:11:14,250 Imxejna ltqajna l-aħħar tal- fajl aħna qed jippruvaw jikkupjaw. 227 00:11:14,250 --> 00:11:18,500 U minn dak aħna ser kitbu kollha tal-karattri għandna bżonn għall-fajl 228 00:11:18,500 --> 00:11:19,500 li aħna qed miktub lill. 229 00:11:19,500 --> 00:11:24,270 Allura dan huwa cp, il-kopja kmand Linux. 230 00:11:24,270 --> 00:11:26,550 >> Fil-bidu nett tal dan il-video, kelli l-twiddiba 231 00:11:26,550 --> 00:11:29,840 li aħna se nitkellmu a ftit dwar pointers. 232 00:11:29,840 --> 00:11:32,480 Hawnhekk huwa speċifikament fejn aħna qed ser jitkellmu dwar pointers 233 00:11:32,480 --> 00:11:34,800 minbarra għall-fajl pointers. 234 00:11:34,800 --> 00:11:37,870 Allura din il-funzjoni jistenna tip ta 'scary. 235 00:11:37,870 --> 00:11:39,120 Huwa ltqajna diversi parametri. 236 00:11:39,120 --> 00:11:40,430 Hemm ħafna jiġri hawn fuq. 237 00:11:40,430 --> 00:11:42,760 Hemm ħafna ta 'differenti kuluri u testi. 238 00:11:42,760 --> 00:11:47,100 Imma verament, huwa biss l- verżjoni ġenerika ta fgetc 239 00:11:47,100 --> 00:11:50,110 li jippermetti li jiksbu kwalunkwe ammont ta 'informazzjoni. 240 00:11:50,110 --> 00:11:53,560 Hija tista 'tkun daqsxejn ineffiċjenti jekk aħna qed jkollna karattri wieħed fi żmien, 241 00:11:53,560 --> 00:11:55,770 mtennija permezz tal-fajl karattru wieħed kull darba. 242 00:11:55,770 --> 00:12:00,230 Mhux se jkun nicer li tikseb 100 fi żmien jew 500 fi żmien? 243 00:12:00,230 --> 00:12:03,250 >> Well, fread u l-funzjoni ħbieb tagħha fwrite, li aħna ser nitkellmu dwar 244 00:12:03,250 --> 00:12:05,490 fit-tieni, inessu tagħmel dan. 245 00:12:05,490 --> 00:12:08,480 Aħna tista 'taqra l-ammont arbitrarju ta 'informazzjoni minn fajl 246 00:12:08,480 --> 00:12:10,290 u aħna jaħżnu x'imkien temporanjament. 247 00:12:10,290 --> 00:12:12,980 Minflok li tkun tista 'biss tajbin fil-varjabbli waħda, 248 00:12:12,980 --> 00:12:15,790 nistgħu bżonn biex jaħżnuh fil-firxa. 249 00:12:15,790 --> 00:12:19,980 U hekk, aħna jgħaddu f'erba argumenti li fread-- pointer 250 00:12:19,980 --> 00:12:23,940 għall-post fejn aħna qed se jaħżnu l-informazzjoni, 251 00:12:23,940 --> 00:12:29,180 kemm tkun kbira kull unità ta 'informazzjoni se jkun, kemm unitajiet ta 'informazzjoni 252 00:12:29,180 --> 00:12:35,192 irridu li jakkwista, u minn li fajl irridu li tikseb minnhom. 253 00:12:35,192 --> 00:12:37,150 Probabbilment l-aħjar illustrati ma 'eżempju hawn. 254 00:12:37,150 --> 00:12:41,640 Mela ejja ngħidu li aħna niddikjaraw firxa ta '10 interi. 255 00:12:41,640 --> 00:12:45,080 Imxejna biss dikjarat fuq it munzell arbitrarju int arr 10. 256 00:12:45,080 --> 00:12:46,970 Allura dak pjuttost sempliċi. 257 00:12:46,970 --> 00:12:51,970 Issa dak li aħna qed tagħmel għalkemm huwa l- frecall huwa we qed taqra daqs ta 'int 258 00:12:51,970 --> 00:12:54,180 ħinijiet 10 bytes ta 'informazzjoni. 259 00:12:54,180 --> 00:12:59,040 Daqs tal int benessri four-- li l- id-daqs ta 'numru sħiħ fi c. 260 00:12:59,040 --> 00:13:02,790 >> Allura dak li aħna qed tagħmel hija aħna qed taqra 40 bytes jiswew ta 'informazzjoni 261 00:13:02,790 --> 00:13:05,850 mill-fajl indikat mill PTR. 262 00:13:05,850 --> 00:13:08,600 U aħna qed ħażna dawk 40 bytes x'imkien 263 00:13:08,600 --> 00:13:12,080 fejn għandna imwarrba 40 bytes valur ta 'memorja. 264 00:13:12,080 --> 00:13:15,970 Fortunatament, aħna stajt diġà għamlu dan mill tiddikjara arr, li array hemm dritt. 265 00:13:15,970 --> 00:13:19,770 Li huwa kapaċi ta holding 10 unitajiet ta 'erba' bytes. 266 00:13:19,770 --> 00:13:22,860 Allura b'kollox, hija tista 'żżomm 40 bytes jiswew ta 'informazzjoni. 267 00:13:22,860 --> 00:13:26,540 U aħna issa qegħdin qari 40 bytes ta 'informazzjoni mill-fajl, 268 00:13:26,540 --> 00:13:30,330 u aħna qed maħżuna fil arr. 269 00:13:30,330 --> 00:13:35,470 >> Jitlob lura mingħandhom il-video fuq pointers li l-isem ta 'firxa, bħal arr, 270 00:13:35,470 --> 00:13:38,370 huwa verament ftit pointer l-ewwel element tagħha. 271 00:13:38,370 --> 00:13:43,680 Allura meta aħna jgħaddu fil arr hemmhekk, aħna huma, fil-fatt, li jgħaddi fil-pointer. 272 00:13:43,680 --> 00:13:46,120 >> Bl-istess mod nistgħu nagħmlu this-- aħna ma neċessarjament 273 00:13:46,120 --> 00:13:51,200 bżonn biex jiffrankaw buffer tagħna fuq il-munzell. 274 00:13:51,200 --> 00:13:54,990 Nistgħu wkoll dinamiku jalloka a buffer bħal dan, bl-użu malloc. 275 00:13:54,990 --> 00:13:57,340 Ftakar, meta aħna dinamiku jallokaw memorja, 276 00:13:57,340 --> 00:14:00,550 aħna qed iffrankar fuq il- munzell, mhux il-munzell. 277 00:14:00,550 --> 00:14:02,110 Iżda huwa għadu buffer. 278 00:14:02,110 --> 00:14:06,810 >> Hija xorta, f'dan il-każ, huwa żamma 640 bytes ta 'informazzjoni 279 00:14:06,810 --> 00:14:09,230 minħabba doppja jieħu tmien bytes. 280 00:14:09,230 --> 00:14:11,570 U aħna qed tistaqsi għal 80 minnhom. 281 00:14:11,570 --> 00:14:13,770 Aħna rridu li jkollhom spazju li jżommu 80 jirdoppja. 282 00:14:13,770 --> 00:14:17,210 Allura 80 darba 8 huwa 640 bytes informazzjoni. 283 00:14:17,210 --> 00:14:21,880 U dik is-sejħa għall fread huwa ġbir 640 bytes ta 'informazzjoni 284 00:14:21,880 --> 00:14:27,770 mill osservat il-fajl mill PTR u maħżuna issa fil arr2. 285 00:14:27,770 --> 00:14:32,770 >> Issa nistgħu wkoll iqisu fread bħad sejħa għall fgetc. 286 00:14:32,770 --> 00:14:37,140 F'dan il-każ, aħna qed biss tipprova tikseb karattru wieħed mill-fajl. 287 00:14:37,140 --> 00:14:40,070 U aħna ma bżonn array li jkollhom karattru. 288 00:14:40,070 --> 00:14:43,170 Nistgħu biss jaħżen fil varjabbli karattru. 289 00:14:43,170 --> 00:14:46,390 >> Il-qabda, għalkemm, hi li meta aħna biss ikollhom varjabbli, 290 00:14:46,390 --> 00:14:50,290 għandna bżonn li jgħaddu fil- indirizz ta 'dak il-varjabbli 291 00:14:50,290 --> 00:14:52,550 minħabba irtirar li l- ewwel argument li fread 292 00:14:52,550 --> 00:14:59,210 huwa pointer għall-post u l-memorja fejn irridu biex jaħżnu l-informazzjoni. 293 00:14:59,210 --> 00:15:01,550 Għal darb'oħra, l-isem ta ' firxa hija pointer. 294 00:15:01,550 --> 00:15:04,200 Allura aħna ma bżonn tagħmel firxa ampersand. 295 00:15:04,200 --> 00:15:07,270 Iżda ċ, il-karattru c hawn, mhuwiex firxa. 296 00:15:07,270 --> 00:15:08,390 Huwa biss varjabbli. 297 00:15:08,390 --> 00:15:11,840 U għalhekk għandna bżonn li tgħaddi minn ampersand c biex jindikaw 298 00:15:11,840 --> 00:15:15,350 li dak l-indirizz fejn irridu li jaħżen din byte wieħed ta 'informazzjoni, 299 00:15:15,350 --> 00:15:20,479 dan il-karattru wieħed li aħna qed ġbir mill PTR. 300 00:15:20,479 --> 00:15:22,270 Fwrite-- I ser jgħaddu dan ftit aktar 301 00:15:22,270 --> 00:15:25,440 quickly-- hija pjuttost l- ekwivalenti eżatt ta 'fread 302 00:15:25,440 --> 00:15:27,720 ħlief huwa għall-kitba minflok qari, just 303 00:15:27,720 --> 00:15:31,610 bħall-other-- aħna kellna miftuħa u qrib, jiksbu karattru, 304 00:15:31,610 --> 00:15:32,530 jiktbu karattru. 305 00:15:32,530 --> 00:15:35,040 Issa huwa jiksbu arbitrarja ammont ta 'informazzjoni, 306 00:15:35,040 --> 00:15:37,170 ammont arbitrarja dritt ta 'informazzjoni. 307 00:15:37,170 --> 00:15:39,790 Hekk biss bħal qabel, nistgħu jkollhom firxa ta '10 numri interi 308 00:15:39,790 --> 00:15:43,210 fejn diġà għandna informazzjoni maħżuna, forsi. 309 00:15:43,210 --> 00:15:46,580 >> Kien probabbilment xi linji ta 'kodiċi li għandha jgħaddi minn bejn dawn iż-żewġ 310 00:15:46,580 --> 00:15:49,990 fejn I imla arr bil xi ħaġa sinifikanti. 311 00:15:49,990 --> 00:15:51,880 I imla bil '10 interi differenti. 312 00:15:51,880 --> 00:15:54,920 U minflok, dak li jien tagħmel huwa miktub minn arr 313 00:15:54,920 --> 00:15:58,600 u l-ġbir tal-informazzjoni mill arr. 314 00:15:58,600 --> 00:16:02,390 U jien tieħu dik l-informazzjoni u t-tqegħid fil-fajl. 315 00:16:02,390 --> 00:16:05,410 >> Allura minflok ma jkun mill l-fajl lill-buffer, 316 00:16:05,410 --> 00:16:08,790 aħna issa qed tmur minn l buffer għall-fajl. 317 00:16:08,790 --> 00:16:10,580 Allura huwa biss il-maqlub. 318 00:16:10,580 --> 00:16:16,680 Għalhekk għal darb'oħra, bħad qabel, nistgħu għandhom ukoll blokki ta 'memorja borġ 319 00:16:16,680 --> 00:16:19,600 li konna dinamikament allokati u tinqara minn dik 320 00:16:19,600 --> 00:16:21,570 u jiktbu li għall-fajl. 321 00:16:21,570 --> 00:16:24,900 >> U aħna għandna wkoll varjabbli waħda kapaċi li jżommu byte wieħed 322 00:16:24,900 --> 00:16:27,200 ta 'informazzjoni, bħal karattru. 323 00:16:27,200 --> 00:16:29,830 Iżda għal darb'oħra, għandna bżonn li jgħaddu fil l-indirizz ta 'dak il-varjabbli 324 00:16:29,830 --> 00:16:31,840 meta rridu li jaqra minnha. 325 00:16:31,840 --> 00:16:35,280 Allura nistgħu tikteb l-informazzjoni insibu f'dak l-indirizz 326 00:16:35,280 --> 00:16:39,050 l-pointer fajl, PTR. 327 00:16:39,050 --> 00:16:41,630 >> Hemm lottijiet ta 'oħrajn fajl kbir I / O funzjonijiet 328 00:16:41,630 --> 00:16:44,650 li tagħmel affarijiet varji minbarra dawk konna tkellimna dwar llum. 329 00:16:44,650 --> 00:16:46,450 Koppja ta 'dawk inti tista 'ssib utli 330 00:16:46,450 --> 00:16:50,840 huma fgets u fputs, li huma l-ekwivalenti 331 00:16:50,840 --> 00:16:56,190 tal fgetc u fputc iżda għall-qari string wieħed minn fajl. 332 00:16:56,190 --> 00:16:59,020 Minflok ta 'karattru wieħed, se jaqra string kollu. 333 00:16:59,020 --> 00:17:02,940 fprintf, li bażikament tippermetti biex tuża printf li tikteb għall-fajl. 334 00:17:02,940 --> 00:17:05,619 Hekk biss bħal inti tista 'tagħmel l- sostituzzjoni varjabbli użu 335 00:17:05,619 --> 00:17:09,900 l i placeholders mija u mija d, u l-bqija, ma printf 336 00:17:09,900 --> 00:17:14,690 inti tista 'bl-istess mod tieħu l- string printf u xi ħaġa print 337 00:17:14,690 --> 00:17:16,800 bħal dik għall-fajl. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- jekk għandek DVD player huwa l-analoġija I normalment jużaw here-- 339 00:17:20,720 --> 00:17:23,109 huwa tip ta bħall-użu tiegħek kontrina u veloċi quddiem 340 00:17:23,109 --> 00:17:25,819 buttuni li jiċċaqalqu madwar l-film. 341 00:17:25,819 --> 00:17:28,369 Bl-istess mod, inti tista 'timxi madwar il-fajl. 342 00:17:28,369 --> 00:17:30,250 Waħda mill-affarijiet ġewwa li istruttura tal-fajl 343 00:17:30,250 --> 00:17:34,270 li ċ toħloq għalik huwa indikatur ta 'fejn inti fil-fajl. 344 00:17:34,270 --> 00:17:36,420 Inti fil-ħafna bidu, fil byte żero? 345 00:17:36,420 --> 00:17:39,290 Inti fil byte 100, byte 1000, u l-bqija? 346 00:17:39,290 --> 00:17:44,340 Tista 'tuża fseek biex jimxu b'mod arbitrarju dak l-indikatur quddiem jew lura. 347 00:17:44,340 --> 00:17:46,744 >> U ftell, għal darb'oħra simili għal DVD player, 348 00:17:46,744 --> 00:17:49,660 huwa bħal arloġġ ftit li tg inti kemm minuti u sekondi inti 349 00:17:49,660 --> 00:17:52,480 huma fi movie partikolari. 350 00:17:52,480 --> 00:17:56,990 Bl-istess mod, ftell jgħidlek kif ħafna bytes inti fis-fajl. 351 00:17:56,990 --> 00:18:00,210 feof huwa verżjoni differenti ta 'sejbien jekk inti stajt 352 00:18:00,210 --> 00:18:01,700 laħqu t-tmiem tal-fajl. 353 00:18:01,700 --> 00:18:03,600 U ferror hija funzjoni li tista 'tuża 354 00:18:03,600 --> 00:18:06,959 biex jiskopru jekk ikunx xi ħaġa għandha marret ħidma ħażin bil-fajl. 355 00:18:06,959 --> 00:18:08,750 Għal darb'oħra, dan huwa biss grif tal-wiċċ. 356 00:18:08,750 --> 00:18:12,730 Hemm għadu ħafna aktar file I / O funzjonijiet fil-io.h. standard 357 00:18:12,730 --> 00:18:16,620 Iżda dan probabbilment se tikseb inti bdiet taħdem ma 'fajl pointers. 358 00:18:16,620 --> 00:18:17,640 Jien Doug Lloyd. 359 00:18:17,640 --> 00:18:19,750 Dan huwa CS50. 360 00:18:19,750 --> 00:18:21,669