1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> HOPARLÖR: Bu günə qədər ola bilər proqramları ən çox 3 00:00:07,870 --> 00:00:10,170 bir az efemer olmuşdur. 4 00:00:10,170 --> 00:00:13,310 Siz Mario və ya Greedy kimi bir proqram run. 5 00:00:13,310 --> 00:00:17,350 Bu, bəlkə ister, bir şey yoxdur Bəzi məlumatlara üçün istifadəçi, 6 00:00:17,350 --> 00:00:20,400 ekran bəzi çıxış çap, lakin sonra proqram üzərində zaman 7 00:00:20,400 --> 00:00:23,252 heç bir dəlil həqiqətən var Bu ilk növbədə run edilmişdir. 8 00:00:23,252 --> 00:00:25,960 Mən əminəm, siz yazmayıblar bilər, demək Bu, terminal pəncərə açmaq 9 00:00:25,960 --> 00:00:29,770 Siz ekran sil əgər var mövcud həqiqətən, heç bir dəlil. 10 00:00:29,770 --> 00:00:33,720 Biz saxlanılması vasitəsi yoxdur davamlı informasiya, informasiya 11 00:00:33,720 --> 00:00:36,890 ki, sonra mövcud Proqram çalışan dayandırdı, 12 00:00:36,890 --> 00:00:39,241 və ya biz bu nöqtəyə qədər yoxdur. 13 00:00:39,241 --> 00:00:41,490 Xoşbəxtlikdən, baxmayaraq ki, c yoxdur qabiliyyəti ilə bizi təmin 14 00:00:41,490 --> 00:00:44,220 həyata bunu deyilən bir şey 15 00:00:44,220 --> 00:00:48,330 bir fayl, bir quruluş ki, əsasən Siz ikiqat ki, bir fayl təmsil 16 00:00:48,330 --> 00:00:53,826 Siz değilseniz, bilgisayarınızda basın qrafik istifadəçi mühitində üçün istifadə olunur. 17 00:00:53,826 --> 00:00:55,700 Ümumiyyətlə iş zaman c, biz, həqiqətən istəyirik 18 00:00:55,700 --> 00:00:59,965 ilə iş olacaq göstəricilərinə fayl fayllar üçün stars-- 19 00:00:59,965 --> 00:01:02,090 bir az istisna olmaqla, biz bir neçə haqqında danışmaq zaman 20 00:01:02,090 --> 00:01:04,560 funksiyaları ki, fayl göstəricilər ilə işləmək. 21 00:01:04,560 --> 00:01:08,990 Siz, həqiqətən, qazılmış var ehtiyac yoxdur anlayışı göstəricilər daxil çox dərin 22 00:01:08,990 --> 00:01:09,730 özləri. 23 00:01:09,730 --> 00:01:12,870 Bir az ufacık bit var biz onlar haqqında danışmaq olacaq, 24 00:01:12,870 --> 00:01:18,090 lakin ümumiyyətlə göstəricilərinə fayl və göstəricilər, qarşılıqlı isə, 25 00:01:18,090 --> 00:01:20,290 eyni şey deyil. 26 00:01:20,290 --> 00:01:22,440 >> İndi zaman nə deməkdir Mən davamlı data demək? 27 00:01:22,440 --> 00:01:23,650 Israrlı data nədir? 28 00:01:23,650 --> 00:01:25,232 Biz bu barədə nə qayğı yoxdur? 29 00:01:25,232 --> 00:01:27,190 Ki, məsələn, deyirlər Bir proqram yayınlıyorsanız 30 00:01:27,190 --> 00:01:29,850 və ya yenidən etdik bir oyun proqram, 31 00:01:29,850 --> 00:01:32,960 və takip etmək istəyirəm istifadəçi hamle bütün 32 00:01:32,960 --> 00:01:36,620 belə bir şey yanlış gedir ki, bəlkə, Siz oyun sonra fayl inceleyebilirsiniz. 33 00:01:36,620 --> 00:01:39,970 Ki, zaman biz demək nə var Davamlı məlumatlar haqqında danışmaq. 34 00:01:39,970 --> 00:01:43,930 >> Çalışan zamanı sizin Proqram bir fayl yaradılmışdır. 35 00:01:43,930 --> 00:01:45,680 Və proqram çalışan dayandırdı, 36 00:01:45,680 --> 00:01:48,689 ki, fayl hələ sistem mövcuddur. 37 00:01:48,689 --> 00:01:50,230 Və biz baxmaq və yoxlamaq olar. 38 00:01:50,230 --> 00:01:53,670 Və belə ki proqram üçün müəyyən olunacaq bəzi israrlı data yaratdıq, 39 00:01:53,670 --> 00:01:57,390 data proqram sonra mövcud çalışan başa çatıb. 40 00:01:57,390 --> 00:02:02,320 >> İndi iş bu funksiyaları bütün faylları yaratmaq və manipulyasiya ilə 41 00:02:02,320 --> 00:02:04,940 müxtəlif yollarla onları standart io.h yaşayır, 42 00:02:04,940 --> 00:02:08,210 olan header fayl ki, çox güman ki, funt oldum 43 00:02:08,210 --> 00:02:10,910 Olduqca üst o cümlədən proqramları çox bütün 44 00:02:10,910 --> 00:02:14,130 Bu biri var, çünki bizim üçün ən faydalı funksiyaları, 45 00:02:14,130 --> 00:02:16,130 də imkan verir printf, standart io.h. yaşayır 46 00:02:16,130 --> 00:02:20,400 Belə ki, daxil funt ehtiyac yoxdur heç bir əlavə faylları yəqin ki, 47 00:02:20,400 --> 00:02:23,540 məqsədilə fayl göstəricilər ilə işləmək üçün. 48 00:02:23,540 --> 00:02:29,980 >> İndi hər bir fayl pointer funksiyası, və ya hər bir fayl I / O, input output 49 00:02:29,980 --> 00:02:33,310 funksiyası biri kimi qəbul onun parametrləri və ya giriş 50 00:02:33,310 --> 00:02:35,822 başqa fayl göstərici bir, fopen olan 51 00:02:35,822 --> 00:02:38,280 Siz fayl almaq üçün istifadə edir ilk növbədə göstərici. 52 00:02:38,280 --> 00:02:41,010 Amma açdı sonra fayl və fayl göstəricilərinə almaq, 53 00:02:41,010 --> 00:02:43,510 sonra kimi keçə bilər müxtəlif funksiyaları arqumentlər 54 00:02:43,510 --> 00:02:46,720 biz danışmaq olacaq Bu gün, eləcə də bir çox digər 55 00:02:46,720 --> 00:02:48,520 ki, faylları ilə işləyə bilər. 56 00:02:48,520 --> 00:02:50,980 >> Belə ki, altı olduqca var ümumi əsas olanları 57 00:02:50,980 --> 00:02:52,870 biz bu gün haqqında danışmaq olacaq ki. 58 00:02:52,870 --> 00:02:57,160 fopen və onun yoldaşı funksiyası fclose, fgetc 59 00:02:57,160 --> 00:03:02,670 və onun yoldaşı funksiyası fputc, və fread və onun yoldaşı funksiyası, 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 Belə ki, doğru daxil edək. 62 00:03:05,180 --> 00:03:07,050 >> fopen nə edir? 63 00:03:07,050 --> 00:03:10,050 Bəli, bu bir fayl açılır və bu bir fayl göstərici verir, 64 00:03:10,050 --> 00:03:14,000 belə ki, o istifadə edə bilərsiniz ki, bir arqument kimi göstərici fayl 65 00:03:14,000 --> 00:03:16,730 digər fayl I / O funksiyaları hər hansı bir. 66 00:03:16,730 --> 00:03:19,100 Ən mühüm şey fopen ilə yadda 67 00:03:19,100 --> 00:03:24,222 Siz açılmışdır ki, sonra fayl və ya burada kimi bir çağırış etdi, 68 00:03:24,222 --> 00:03:26,930 Sizi əmin etmək yoxlamaq lazımdır ki, geri almışdır pointer 69 00:03:26,930 --> 00:03:28,320 null bərabər deyil. 70 00:03:28,320 --> 00:03:31,320 Siz video seyr əgər göstəricilər, bu mənada bilər. 71 00:03:31,320 --> 00:03:35,639 Amma siz cəhd və dereference əgər bir null göstərici geri, 72 00:03:35,639 --> 00:03:38,180 proqram yəqin ki, dözəcəyik bir seqmentasiya [işitilemez]. 73 00:03:38,180 --> 00:03:40,540 Biz əmin etmək istəyirəm ki, biz qanuni göstərici geri almışdır. 74 00:03:40,540 --> 00:03:43,665 zaman böyük əksəriyyəti biz geri qanuni göstərici kazanılmış 75 00:03:43,665 --> 00:03:45,280 və bir problem olmayacaq. 76 00:03:45,280 --> 00:03:46,760 >> Belə ki, necə biz bir zəng fopen edə bilərəm? 77 00:03:46,760 --> 00:03:48,051 Bu kimi olduqca çox görünür. 78 00:03:48,051 --> 00:03:52,690 Ümumi olan ptr ptr-- File star göstərici fopen fayl adı 79 00:03:52,690 --> 00:03:57,300 və biz iki şeyi bir fayl adı keçir və əməliyyat biz həyata istəyirəm. 80 00:03:57,300 --> 00:04:01,690 Beləliklə, biz kimi görünür zəng ola bilər şeylərdir fayl star ptr 1 fopen bərabərdir 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 Mən seçdiyiniz əməliyyat r edir. 83 00:04:07,020 --> 00:04:08,639 >> Beləliklə, nə siz r burada düşünürsünüz? 84 00:04:08,639 --> 00:04:11,180 Şeylər hansılardır biz faylları üçün nə edə bilər? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 Belə ki, r əməliyyat ki, biz biz bir fayl oxumaq üçün istədiyiniz zaman seçin. 87 00:04:17,500 --> 00:04:20,260 Belə ki, biz əsasən zaman ki biz bu kimi zəng 88 00:04:20,260 --> 00:04:25,440 özümüzü bir fayl göstərici əldə biz sonra məlumat oxumaq bilər ki, belə 89 00:04:25,440 --> 00:04:27,770 file1.txt olan. 90 00:04:27,770 --> 00:04:34,190 >> Eynilə, biz fayl 2.txt aça bilər ptr2 yazı üçün və biz keçə bilər, 91 00:04:34,190 --> 00:04:38,210 Mən burada yaratdığınız fayl pointer, hər hansı bir funksiyası bir dəlil kimi 92 00:04:38,210 --> 00:04:40,080 bir fayl məlumat yazır. 93 00:04:40,080 --> 00:04:43,767 Və yazı oxşar var da seçimi, əlavə. 94 00:04:43,767 --> 00:04:45,600 arasında fərq yazılı və sınız 95 00:04:45,600 --> 00:04:50,920 olan bir fayl yazmaq zaman, Siz yazı üçün fopen zəng əgər 96 00:04:50,920 --> 00:04:54,761 ki, fayl artıq bu, mövcud bütün fayl üzerine gedir. 97 00:04:54,761 --> 00:04:56,510 Bu başlamaq olacaq çox başında, 98 00:04:56,510 --> 00:04:58,820 bütün silmə ki, artıq var. 99 00:04:58,820 --> 00:05:02,210 >> Siz eklenmesi üçün onu açmaq əgər Halbuki, Bu fayl sonunda gedəcək 100 00:05:02,210 --> 00:05:04,340 Artıq mətn var, əgər Bu və ya bu məlumat, 101 00:05:04,340 --> 00:05:06,040 və sonra başlayacaq oradan yazı. 102 00:05:06,040 --> 00:05:08,570 Beləliklə, siz hər hansı bir itirmək olmaz Əvvəl etdiyiniz məlumat. 103 00:05:08,570 --> 00:05:12,110 Yazmaq və ya əlavə etmək istəyirəm olsun sort vəziyyəti asılıdır. 104 00:05:12,110 --> 00:05:16,840 Amma yəqin ki, nə bilirsiniz vaxtı gələndə sağ əməliyyatdır. 105 00:05:16,840 --> 00:05:18,020 Belə ki, fopen var. 106 00:05:18,020 --> 00:05:18,930 >> Nə fclose haqqında? 107 00:05:18,930 --> 00:05:21,600 Bəli, olduqca sadəcə, fclose yalnız fayl göstərici qəbul edir. 108 00:05:21,600 --> 00:05:24,000 Və gözləyə bilər kimi, Bu fayl bağlayır. 109 00:05:24,000 --> 00:05:29,270 Biz bir fayl qapalı sonra, biz bilməz bir daha fayl I / O funksiyaları yerinə 110 00:05:29,270 --> 00:05:31,420 oxu və ya fayl, yazı. 111 00:05:31,420 --> 00:05:36,444 Biz yenidən açmaq lazımdır üçün başqa vaxt fayl 112 00:05:36,444 --> 00:05:38,610 ilə iş davam etmək Bu I / O funksiyaları istifadə edərək. 113 00:05:38,610 --> 00:05:41,520 Biz tamamlayın So fclose vasitələri Bu fayl ilə işləyir. 114 00:05:41,520 --> 00:05:44,690 Və biz keçmək lazım deyil bir fayl göstərici adı. 115 00:05:44,690 --> 00:05:50,010 Bir neçə il əvvəl slaydlar Belə ki, biz oxumaq üçün fopened fayl 1 dot mətn 116 00:05:50,010 --> 00:05:52,854 və biz təyin ptr1 göstərici fayl. 117 00:05:52,854 --> 00:05:55,020 İndi biz istəyirik karar ki, fayl oxu edilir. 118 00:05:55,020 --> 00:05:56,561 Biz onunla bir daha etmək lazım deyil. 119 00:05:56,561 --> 00:05:58,890 Biz yalnız fclose ptr1 bilərsiniz. 120 00:05:58,890 --> 00:06:01,950 Və eyni, biz bilər digər olanları fclose. 121 00:06:01,950 --> 00:06:02,450 Oldu. 122 00:06:02,450 --> 00:06:03,700 Belə ki, açılış və bağlanış oldu. 123 00:06:03,700 --> 00:06:05,780 Bu iki əsas var əməliyyatları başlayır. 124 00:06:05,780 --> 00:06:08,050 >> İndi biz, həqiqətən istəyirəm bəzi maraqlı stuff edə, 125 00:06:08,050 --> 00:06:11,940 və ilk funksiyası ki, biz lazımdır ki fgetc-- ki, bunu görmək 126 00:06:11,940 --> 00:06:14,110 Bir xarakter almaq fayl. 127 00:06:14,110 --> 00:06:17,350 Ki, ümumiyyətlə fgetc nə tərcümə olardı. 128 00:06:17,350 --> 00:06:20,190 Həyat onun məqsədi üçün növbəti xarakter oxumaq, 129 00:06:20,190 --> 00:06:22,079 və ya bu sizin çox əgər fgetc ilk zəng 130 00:06:22,079 --> 00:06:23,870 xüsusi fayl üçün, ilk character. 131 00:06:23,870 --> 00:06:26,210 Amma sonra sonra, Siz növbəti bir almaq 132 00:06:26,210 --> 00:06:31,500 fayl çox növbəti xarakteri, Bir xarakter dəyişən və depolar. 133 00:06:31,500 --> 00:06:34,490 Biz burada etdik ki, char ch, fgetc bərabərdir 134 00:06:34,490 --> 00:06:36,389 bir fayl göstərici adı keçir. 135 00:06:36,389 --> 00:06:38,180 Yenə, bu, çox var xatırlamaq Burada əhəmiyyətli 136 00:06:38,180 --> 00:06:41,430 üçün var ki, bu əməliyyat uğur, 137 00:06:41,430 --> 00:06:45,690 Fayl pointer özü must've oxumaq üçün açılmışdır. 138 00:06:45,690 --> 00:06:50,589 Biz faylı bir xarakter oxumaq bilməyən biz yazmaq üçün açılan pointer. 139 00:06:50,589 --> 00:06:52,630 Belə ki, biri fopen məhdudiyyətlər, sağ? 140 00:06:52,630 --> 00:06:55,470 Biz məhdudlaşdırmaq lazımdır özümüzü yalnız həyata 141 00:06:55,470 --> 00:06:57,710 bir fayl göstərici ilə bir əməliyyat. 142 00:06:57,710 --> 00:07:00,220 Biz oxumaq istəyirdi və Eyni faylı yazmaq, 143 00:07:00,220 --> 00:07:03,840 Biz açıq iki ayrı olardı Eyni fayl fayl göstəricilər 144 00:07:03,840 --> 00:07:05,670 oxumaq üçün bir yazı üçün. 145 00:07:05,670 --> 00:07:08,400 >> Belə ki, yenə tək səbəbi Mən indi yetişdirmək 146 00:07:08,400 --> 00:07:11,920 biz zəng etmək olacaq, çünki fgetc üçün, fayl pointer must've 147 00:07:11,920 --> 00:07:14,172 oxumaq üçün açılmışdır. 148 00:07:14,172 --> 00:07:15,880 Və sonra olduqca sadəcə, bütün etməmiz lazımdır 149 00:07:15,880 --> 00:07:17,546 Fayl göstərici adına keçir. 150 00:07:17,546 --> 00:07:21,060 Belə ki, char ch fgetc ptr1 bərabərdir. 151 00:07:21,060 --> 00:07:23,200 >> Ki, bizə almaq olacaq növbəti xarakter 152 00:07:23,200 --> 00:07:25,575 və ya yenidən bu ilk, əgər Biz bu zəng etdik zaman, 153 00:07:25,575 --> 00:07:29,750 ilk xarakter nə Fayl ptr1 ilə işarə olunur. 154 00:07:29,750 --> 00:07:32,210 Ki, fayl 1 dot mətn idi ki, xatırlayıram. 155 00:07:32,210 --> 00:07:36,490 Bu ilk xarakter almaq lazımdır və biz dəyişən ch onu saxlamaq lazımdır. 156 00:07:36,490 --> 00:07:37,941 Pretty sadə. 157 00:07:37,941 --> 00:07:40,190 Beləliklə, biz yalnız üç baxdı etdik funksiyaları və biz artıq 158 00:07:40,190 --> 00:07:43,070 olduqca səliqəli şey edə bilərsiniz. 159 00:07:43,070 --> 00:07:46,320 >> Bu qabiliyyəti əgər Belə ki, bir xarakter əldə 160 00:07:46,320 --> 00:07:48,943 və biz loop belə pseudocode biz simvol almaq üçün davam 161 00:07:48,943 --> 00:07:51,390 bir fayl üzərində və üzərində və over-- indi biz 162 00:07:51,390 --> 00:07:54,500 hər bir oxuya bilərsiniz bir fayl xarakter. 163 00:07:54,500 --> 00:07:58,670 Və biz hər xarakter çap əgər biz oxumaq dərhal sonra, 164 00:07:58,670 --> 00:08:01,960 biz indi bir fayl oxumaq və ekran onun məzmunu çap. 165 00:08:01,960 --> 00:08:05,610 Biz səmərəli Zəncirləmə etdik Ekranda ki, fayl. 166 00:08:05,610 --> 00:08:09,670 Və nə Linux command pişik yoxdur. 167 00:08:09,670 --> 00:08:13,250 >> Siz fayl adı pişik növü varsa, bütün içeriğini çap edəcək 168 00:08:13,250 --> 00:08:15,160 Sizin terminal pəncərə fayl. 169 00:08:15,160 --> 00:08:19,010 Və belə ki, burada bu kiçik loop, kod yalnız üç xətləri, 170 00:08:19,010 --> 00:08:23,270 lakin bu səmərəli dublikatları Linux command cat. 171 00:08:23,270 --> 00:08:25,210 Belə ki, bu sintaksis bilər bir az qəribə baxmaq 172 00:08:25,210 --> 00:08:26,670 lakin burada neler var. 173 00:08:26,670 --> 00:08:31,460 Ch fgetc bərabərdir baxmayaraq, ptr deyil bir bütün qurtum EOF-- bərabər, 174 00:08:31,460 --> 00:08:34,669 lakin onu yalnız qırmaq edək belə ki, sintaksis aydın deyil. 175 00:08:34,669 --> 00:08:37,169 Mən bunu konsolidə edilmiş etdik kosmik naminə, 176 00:08:37,169 --> 00:08:39,049 bir az var, baxmayaraq ki, syntactically çətin. 177 00:08:39,049 --> 00:08:41,194 >> Belə ki, yaşıl sağ bu hissəsi indi nə edir? 178 00:08:41,194 --> 00:08:42,860 Yaxşı, ki, yalnız bizim fgetc zəng, sağ? 179 00:08:42,860 --> 00:08:44,530 Biz əvvəl gördüm. 180 00:08:44,530 --> 00:08:49,500 Bu, bir əldə edir fayl character. 181 00:08:49,500 --> 00:08:53,220 Sonra biz müqayisə EOF qarşı xarakter. 182 00:08:53,220 --> 00:08:57,470 EOF bir xüsusi dəyəri standart io.h, müəyyən edən 183 00:08:57,470 --> 00:08:59,390 Fayl xarakterli sonu. 184 00:08:59,390 --> 00:09:03,450 Belə ki, əsasən baş neler Bu loop bir xarakter oxumaq olacaq, 185 00:09:03,450 --> 00:09:07,445 , EOF müqayisə Fayl xarakterli sonu. 186 00:09:07,445 --> 00:09:10,070 Onlar uyğun deyilsə, biz deyil , fayl sona gəlindi 187 00:09:10,070 --> 00:09:11,490 ki, xarakter çap lazımdır. 188 00:09:11,490 --> 00:09:13,740 Sonra biz geri getmək lazımdır yenidən loop başlayan. 189 00:09:13,740 --> 00:09:18,310 Biz bir xarakter almaq lazımdır, yoxlamaq EOF qarşı, belə ki, onu çap və 190 00:09:18,310 --> 00:09:21,094 və s və s, yol vasitəsilə loop 191 00:09:21,094 --> 00:09:22,760 biz fayl sonunda əldə etdiyiniz qədər. 192 00:09:22,760 --> 00:09:24,593 Və o nöqtədə, biz çap olacaq 193 00:09:24,593 --> 00:09:26,210 fayl bütün məzmunu həyata. 194 00:09:26,210 --> 00:09:29,450 Belə ki, yenə, biz yalnız gördüm fopen, fclose və fgetc 195 00:09:29,450 --> 00:09:34,950 və artıq biz dublikat bilər Linux terminal komanda. 196 00:09:34,950 --> 00:09:38,850 >> Əvvəldə dediyim kimi, biz fgetc və fputc idi, 197 00:09:38,850 --> 00:09:41,860 və fputc yoldaşı idi fgetc funksiyası. 198 00:09:41,860 --> 00:09:44,880 Belə ki, kimi, təsəvvür edə bilər Bu yazı bərabərdir. 199 00:09:44,880 --> 00:09:49,440 Bu, bizə bir yazmaq imkan verir bir fayl bir xarakter. 200 00:09:49,440 --> 00:09:53,290 >> Yenə verirlər olan, yalnız Bu fgetc idi kimi, fayl 201 00:09:53,290 --> 00:09:56,660 biz must've yazılı etdiyiniz olmuşdur yazılı və ya eklenmesi üçün açdı. 202 00:09:56,660 --> 00:10:00,820 Biz cəhd və bir fayl fputc istifadə əgər biz oxumaq üçün açılan etdik ki, 203 00:10:00,820 --> 00:10:02,760 biz əziyyət olacaq bir səhv bir az. 204 00:10:02,760 --> 00:10:04,440 Amma zəng olduqca sadədir. 205 00:10:04,440 --> 00:10:08,000 fputc kapital A ptr2, bütün Bunu olacaq bu deyil 206 00:10:08,000 --> 00:10:12,040 məktub yazmaq gedir A fayla 2 nöqtə daxil 207 00:10:12,040 --> 00:10:14,760 adı oldu mətn, açdıq və təyin faylı 208 00:10:14,760 --> 00:10:17,280 pointer ptr2 üçün. 209 00:10:17,280 --> 00:10:20,430 Beləliklə, biz bir yazmaq olacaq kapital A 2 dot mətn faylı. 210 00:10:20,430 --> 00:10:24,592 Və biz bir nida yazmaq lazımdır 3 dot fayl qeyd 211 00:10:24,592 --> 00:10:27,330 ptr3 ilə işarə etdi mətn. 212 00:10:27,330 --> 00:10:29,730 Belə ki, yenə, burada olduqca sadə. 213 00:10:29,730 --> 00:10:32,727 >> Amma indi biz başqa şey edə bilərsiniz. 214 00:10:32,727 --> 00:10:34,560 Biz bu nümunə biz artıq gedirdi 215 00:10:34,560 --> 00:10:38,950 pişik kopya edə haqqında Linux command, çap bir 216 00:10:38,950 --> 00:10:40,500 ekran. 217 00:10:40,500 --> 00:10:43,510 Yaxşı, indi biz imkanı var ki, faylları simvol oxumaq üçün 218 00:10:43,510 --> 00:10:46,590 və faylları simvol yazmaq niyə biz yalnız əvəz etmir 219 00:10:46,590 --> 00:10:50,720 fputc zəng ilə printf zəng. 220 00:10:50,720 --> 00:10:54,090 >> İndi biz cp təqlid etdik, bir çox əsas Linux command 221 00:10:54,090 --> 00:10:59,100 biz yol uzun danışdıq ki, bundan Linux video əmr edir. 222 00:10:59,100 --> 00:11:01,070 Biz səmərəli var burada ki, təqlid. 223 00:11:01,070 --> 00:11:04,790 Biz bir xarakter oxu edirik və sonra biz istəyirik başqa fayl xarakter yazılı. 224 00:11:04,790 --> 00:11:07,660 Bir fayl oxu, yazı üzərində başqa, 225 00:11:07,660 --> 00:11:11,350 və üzərində yenə biz EOF hit qədər. 226 00:11:11,350 --> 00:11:14,250 Biz sonuna var fayl biz surəti çalışırıq. 227 00:11:14,250 --> 00:11:18,500 Və biz bütün yazılı olacaq simvol biz fayl lazımdır 228 00:11:18,500 --> 00:11:19,500 biz yazılı olduğunuz. 229 00:11:19,500 --> 00:11:24,270 Belə ki, bu cp, Linux surəti əmr edir. 230 00:11:24,270 --> 00:11:26,550 >> Çox əvvəlində Bu video, mən verirlər idi 231 00:11:26,550 --> 00:11:29,840 bir danışmaq ki, göstəricilər haqqında az. 232 00:11:29,840 --> 00:11:32,480 Biz olduğunuz burada xüsusi edir göstəricilər haqqında danışmaq olacaq 233 00:11:32,480 --> 00:11:34,800 əlavə göstəricilərinə fayl. 234 00:11:34,800 --> 00:11:37,870 Belə ki, bu funksiya cür qorxudan görünür. 235 00:11:37,870 --> 00:11:39,120 Bir neçə parametrləri var. 236 00:11:39,120 --> 00:11:40,430 Burada gedən bir çox var. 237 00:11:40,430 --> 00:11:42,760 Müxtəlif bir çox var rəng və mətnlər. 238 00:11:42,760 --> 00:11:47,100 Lakin, həqiqətən, bu, yalnız var fgetc ümumi versiyası 239 00:11:47,100 --> 00:11:50,110 ki, bizə hər hansı bir almaq üçün imkan verir məlumat məbləği. 240 00:11:50,110 --> 00:11:53,560 Biz əgər bir az səmərəsiz ola bilər bir zamanda simvol bir əldə, 241 00:11:53,560 --> 00:11:55,770 fayl vasitəsilə iterating bir-bir xarakter. 242 00:11:55,770 --> 00:12:00,230 Bu almaq üçün gözəl olmazdı Bir anda bir dəfə və ya 500 100? 243 00:12:00,230 --> 00:12:03,250 >> Yaxşı, fread və onun yoldaşı funksiyası fwrite, biz hansı haqqında danışmaq lazımdır 244 00:12:03,250 --> 00:12:05,490 ikinci, bizə yalnız bunu imkan verir. 245 00:12:05,490 --> 00:12:08,480 Biz ixtiyari məbləği oxuya bilərsiniz bir fayl məlumat 246 00:12:08,480 --> 00:12:10,290 və biz bir yerdə müvəqqəti olaraq saxlamaq. 247 00:12:10,290 --> 00:12:12,980 Bunun əvəzinə, yalnız qadir olan bir dəyişən onu uyğun, 248 00:12:12,980 --> 00:12:15,790 biz bir sıra saxlamaq lazımdır. 249 00:12:15,790 --> 00:12:19,980 Və belə ki, biz dörd keçmək arqumentlər bir göstərici fread üçün 250 00:12:19,980 --> 00:12:23,940 biz istəyirik yeri məlumat saxlamaq üçün gedir, 251 00:12:23,940 --> 00:12:29,180 necə hər bir məlumat vahid böyük olacaq, informasiya neçə ədəd 252 00:12:29,180 --> 00:12:35,192 biz əldə etmək istəyən, və fayl biz onları almaq istəyirəm. 253 00:12:35,192 --> 00:12:37,150 Yəqin ki, ən yaxşı təsvir Burada nümunə ilə. 254 00:12:37,150 --> 00:12:41,640 Belə ki, biz bəyan ki, bildirin 10 integers bir sıra. 255 00:12:41,640 --> 00:12:45,080 Biz yalnız bəyan etdik özbaşına yığın Varış 10 int. 256 00:12:45,080 --> 00:12:46,970 Belə ki, olduqca sadə var. 257 00:12:46,970 --> 00:12:51,970 İndi biz nə olsa edirik edir frecall biz int ölçüsü oxuyursunuz ki, 258 00:12:51,970 --> 00:12:54,180 dəfə məlumat 10 bytes. 259 00:12:54,180 --> 00:12:59,040 Int olan Size ki four-- c bir tam ölçüsü. 260 00:12:59,040 --> 00:13:02,790 >> Belə ki, nə biz edirik, biz oxuyursunuz deyil Məlumat dəyərində 40 bytes 261 00:13:02,790 --> 00:13:05,850 fayl Ptr ilə işarə etdi. 262 00:13:05,850 --> 00:13:08,600 Və biz o saxlanılması edirik 40 bytes haradasa 263 00:13:08,600 --> 00:13:12,080 biz kənara olduğu Yaddaş dəyərində 40 bytes. 264 00:13:12,080 --> 00:13:15,970 Sevindirici haldır ki, biz artıq ki etdik ki array orada, Varış elan. 265 00:13:15,970 --> 00:13:19,770 Ki keçirilməsi qadirdir 10 dörd byte kontur. 266 00:13:19,770 --> 00:13:22,860 Cəmi Belə ki, 40 aça bilər bytes məlumat dəyər. 267 00:13:22,860 --> 00:13:26,540 Və biz indi 40 bytes oxu fayl informasiya, 268 00:13:26,540 --> 00:13:30,330 və biz Varış onu saxlanılması edirik. 269 00:13:30,330 --> 00:13:35,470 >> Göstəricilərinə video Xatırladaq ki, Belə Varış kimi bir sıra, adı, 270 00:13:35,470 --> 00:13:38,370 həqiqətən, yalnız bir göstəricisidir ilk element. 271 00:13:38,370 --> 00:13:43,680 Belə ki, biz orada Varış keçmək zaman, biz bir göstərici keçən, əslində, var. 272 00:13:43,680 --> 00:13:46,120 >> Eynilə Biz bu edə bilərsiniz biz mütləq deyil 273 00:13:46,120 --> 00:13:51,200 yığını bufer saxlamaq lazımdır. 274 00:13:51,200 --> 00:13:54,990 Biz də dinamik ayıra bilər bir malloc istifadə edərək, bu kimi bufer. 275 00:13:54,990 --> 00:13:57,340 Zaman, saxla dinamik yaddaş ayrılması, 276 00:13:57,340 --> 00:14:00,550 biz onu qənaət edirik yığın deyil yığını. 277 00:14:00,550 --> 00:14:02,110 Amma hələ bir tampon var. 278 00:14:02,110 --> 00:14:06,810 >> Bu hələ, bu halda, edir məlumat 640 bayt keçirilməsi 279 00:14:06,810 --> 00:14:09,230 ikiqat səkkiz bayt tutur, çünki. 280 00:14:09,230 --> 00:14:11,570 Və biz onlardan 80 üçün xahiş edirik. 281 00:14:11,570 --> 00:14:13,770 Biz yer istəyirəm 80 ikiqat keçiriləcək. 282 00:14:13,770 --> 00:14:17,210 Belə ki, 80 dəfə 8 640 bytes məlumat. 283 00:14:17,210 --> 00:14:21,880 Və fread ki, zəng məlumat 640 bayt toplanması 284 00:14:21,880 --> 00:14:27,770 fayl ilə işarə olan ptr və arr2 indi saxlanılması. 285 00:14:27,770 --> 00:14:32,770 >> İndi biz də fread müalicə edə bilər yalnız fgetc zəng kimi. 286 00:14:32,770 --> 00:14:37,140 Bu halda, biz yalnız çalışdığınız faylı bir xarakter almaq. 287 00:14:37,140 --> 00:14:40,070 Və biz bir ehtiyac yoxdur array bir xarakter keçirmək. 288 00:14:40,070 --> 00:14:43,170 Biz yalnız onu saxlaya bilərsiniz Bir xarakter dəyişən. 289 00:14:43,170 --> 00:14:46,390 >> tutmaq, baxmayaraq ki, biz yalnız bir dəyişən zaman, 290 00:14:46,390 --> 00:14:50,290 biz keçmək lazımdır ki, dəyişən ünvanı 291 00:14:50,290 --> 00:14:52,550 Xatırladaq ki, çünki fread ilk arqument 292 00:14:52,550 --> 00:14:59,210 yeri və yaddaş bir göstəricisidir biz məlumat saxlamaq istədiyiniz. 293 00:14:59,210 --> 00:15:01,550 Yenə bir adı array bir göstəricisidir. 294 00:15:01,550 --> 00:15:04,200 Belə ki, biz işareti array etmək lazım deyil. 295 00:15:04,200 --> 00:15:07,270 Amma c, karakter c Burada bir sıra deyil. 296 00:15:07,270 --> 00:15:08,390 Bu yalnız bir dəyişən var. 297 00:15:08,390 --> 00:15:11,840 Və belə ki, biz bir keçmək lazımdır işareti c göstərir 298 00:15:11,840 --> 00:15:15,350 ki, biz istəyirik ünvan olduğunu məlumat bu bir byte saxlamaq üçün, 299 00:15:15,350 --> 00:15:20,479 bu bir xarakter ki, biz Ptr olan toplanması edirik. 300 00:15:20,479 --> 00:15:22,270 Mən keçmək lazımdır Fwrite-- Bu bir az daha 301 00:15:22,270 --> 00:15:25,440 tez, olduqca çox fread dəqiq ekvivalent 302 00:15:25,440 --> 00:15:27,720 Bu yazı üçün var istisna olmaqla, əvəzinə oxu, yalnız 303 00:15:27,720 --> 00:15:31,610 other-- kimi açıq etdik və yaxın bir xarakter almaq, 304 00:15:31,610 --> 00:15:32,530 bir xarakter yazın. 305 00:15:32,530 --> 00:15:35,040 İndi ixtiyari almaq var məlumat məbləği, 306 00:15:35,040 --> 00:15:37,170 məlumat sağ ixtiyari məbləği. 307 00:15:37,170 --> 00:15:39,790 Belə ki, yalnız əvvəl kimi, biz 10 integers bir sıra var 308 00:15:39,790 --> 00:15:43,210 biz artıq məlumat bəlkə saxlanılır. 309 00:15:43,210 --> 00:15:46,580 >> Bu yəqin ki, kodu bəzi xətləri idi bu iki arasında getməlidir 310 00:15:46,580 --> 00:15:49,990 Mən Varış doldurmaq harada mənalı bir şey. 311 00:15:49,990 --> 00:15:51,880 Mən 10 müxtəlif integers ilə doldurun. 312 00:15:51,880 --> 00:15:54,920 Əvəzinə, mən nə edirəm bunu Varış yazı edilir 313 00:15:54,920 --> 00:15:58,600 və Varış məlumat toplanması. 314 00:15:58,600 --> 00:16:02,390 Mən məlumat alaraq alıram və fayl onu qoyulması. 315 00:16:02,390 --> 00:16:05,410 >> Belə ki, əvəzinə onu olan bufer fayl, 316 00:16:05,410 --> 00:16:08,790 biz artıq olacaq fayl bufer. 317 00:16:08,790 --> 00:16:10,580 Belə ki, yalnız əks edir. 318 00:16:10,580 --> 00:16:16,680 Əvvəl kimi Belə ki, yenə, biz də yaddaş bir yığın yığın var 319 00:16:16,680 --> 00:16:19,600 biz dinamik etdik ki, ayrılmış və oxumaq 320 00:16:19,600 --> 00:16:21,570 və fayl ki, yazmaq. 321 00:16:21,570 --> 00:16:24,900 >> Və biz də bir dəyişən var bir byte keçirilməsi qadir 322 00:16:24,900 --> 00:16:27,200 Belə bir xarakter kimi məlumatların. 323 00:16:27,200 --> 00:16:29,830 Ancaq yenə də, biz keçmək lazımdır ki, dəyişən ünvanı 324 00:16:29,830 --> 00:16:31,840 biz oxutdu istədiyiniz zaman. 325 00:16:31,840 --> 00:16:35,280 Belə ki, biz məlumat yaza bilərsiniz ki, ünvanda tapmaq 326 00:16:35,280 --> 00:16:39,050 Fayl göstərici, ptr. 327 00:16:39,050 --> 00:16:41,630 >> Digər çox var böyük fayl I / O funksiyaları 328 00:16:41,630 --> 00:16:44,650 Bundan başqa, müxtəlif şeylər olanları biz bu gün haqqında söhbət etdik. 329 00:16:44,650 --> 00:16:46,450 Isə bir neçə Faydalı ola bilər 330 00:16:46,450 --> 00:16:50,840 fgets və fputs var, olan ekvivalent 331 00:16:50,840 --> 00:16:56,190 fgetc və fputc lakin oxumaq üçün bir fayl bir string. 332 00:16:56,190 --> 00:16:59,020 Bunun əvəzinə bir xarakter, Bu bütün string oxumaq olacaq. 333 00:16:59,020 --> 00:17:02,940 əsasən imkan verir fprintf, fayl yazmaq üçün printf istifadə etmək. 334 00:17:02,940 --> 00:17:05,619 Siz nə edə bilərsiniz, belə ki, kimi istifadə edərək dəyişən əvəz 335 00:17:05,619 --> 00:17:09,900 placeholders faiz i və printf ilə yüzdə d, və s, 336 00:17:09,900 --> 00:17:14,690 Siz eyni bilər printf string və çap bir şey 337 00:17:14,690 --> 00:17:16,800 bir fayl kimi. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- bir DVD player varsa Mən adətən burada istifadə analogiya edir 339 00:17:20,720 --> 00:17:23,109 növ istifadə kimi sizin geri və sürətli irəli 340 00:17:23,109 --> 00:17:25,819 düymələri film ətrafında hərəkət etmək. 341 00:17:25,819 --> 00:17:28,369 Eynilə, siz fayl ətrafında hərəkət edə bilər. 342 00:17:28,369 --> 00:17:30,250 Daxili şeylərdən biri ki, fayl strukturu 343 00:17:30,250 --> 00:17:34,270 Siz bir göstəricidir ki, c yaradır harada fayl var. 344 00:17:34,270 --> 00:17:36,420 Siz çox var byte sıfır başlayan? 345 00:17:36,420 --> 00:17:39,290 Siz byte 100 var, byte 1000, və s? 346 00:17:39,290 --> 00:17:44,340 Siz özbaşına hərəkət fseek istifadə edə bilərsiniz irəli və ya geri ki, göstərici. 347 00:17:44,340 --> 00:17:46,744 >> Və yenə, ftell bir DVD player bənzər, 348 00:17:46,744 --> 00:17:49,660 deyir ki, bir az saat kimi Siz neçə dəqiqə və saniyə siz 349 00:17:49,660 --> 00:17:52,480 xüsusi film var. 350 00:17:52,480 --> 00:17:56,990 Eynilə, ftell necə deyir çox bytes fayl daxil. 351 00:17:56,990 --> 00:18:00,210 feof fərqli bir versiyası Siz var olub aşkar 352 00:18:00,210 --> 00:18:01,700 fayl sona gəlindi. 353 00:18:01,700 --> 00:18:03,600 Və ferror bir funksiyası var istifadə edə bilərsiniz ki, 354 00:18:03,600 --> 00:18:06,959 bir şey olub olmadığını aşkar etmək üçün bir fayl ilə yanlış iş getdi. 355 00:18:06,959 --> 00:18:08,750 Yenə də, bu yalnız səthi kazıma. 356 00:18:08,750 --> 00:18:12,730 Çox daha çox fayl I / O hələ var standart io.h. funksiyaları 357 00:18:12,730 --> 00:18:16,620 Amma bu, yəqin ki, siz əldə edəcək Fayl göstəricilər ilə iş başladı. 358 00:18:16,620 --> 00:18:17,640 Mən Doug Lloyd edirəm. 359 00:18:17,640 --> 00:18:19,750 Bu CS50 edir. 360 00:18:19,750 --> 00:18:21,669