1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> अध्यक्ष: अब तक, यह संभावना है अपने कार्यक्रमों की सबसे कि 3 00:00:07,870 --> 00:00:10,170 एक सा अल्पकालिक किया गया है। 4 00:00:10,170 --> 00:00:13,310 आप मारियो या लालची की तरह एक कार्यक्रम चलाते हैं। 5 00:00:13,310 --> 00:00:17,350 ऐसा लगता है कि शायद संकेत देता है, कुछ भी करता है कुछ जानकारी के लिए यूजर 6 00:00:17,350 --> 00:00:20,400 परदे के लिए कुछ उत्पादन के लिए प्रिंट, लेकिन फिर अपने कार्यक्रम, खत्म हो चुका है जब 7 00:00:20,400 --> 00:00:23,252 वहाँ कोई सबूत नहीं है कि वहाँ वास्तव में है यह पहली जगह में चलाया गया था। 8 00:00:23,252 --> 00:00:25,960 मुझे यकीन है कि, तुम छोड़ दिया है हो सकता है, इसका मतलब यह यह टर्मिनल विंडो में खुलेगा 9 00:00:25,960 --> 00:00:29,770 आप अपनी स्क्रीन स्पष्ट है लेकिन, अगर वहाँ है यह अस्तित्व में है कि वास्तव में कोई सबूत नहीं है। 10 00:00:29,770 --> 00:00:33,720 हम संचय के लिए एक साधन नहीं है लगातार जानकारी, सूचना 11 00:00:33,720 --> 00:00:36,890 कि हमारे बाद से मौजूद है कार्यक्रम का प्रदर्शन रोक दिया गया है, 12 00:00:36,890 --> 00:00:39,241 या हम इस बात के लिए नहीं है। 13 00:00:39,241 --> 00:00:41,490 सौभाग्य से, हालांकि, सी करता है क्षमता के साथ हमें प्रदान 14 00:00:41,490 --> 00:00:44,220 को लागू करने से यह करने के लिए कुछ बुलाया 15 00:00:44,220 --> 00:00:48,330 एक फ़ाइल, एक संरचना है कि मूल रूप से आप दोगुना होगा कि एक फ़ाइल का प्रतिनिधित्व 16 00:00:48,330 --> 00:00:53,826 आप कर रहे हैं, तो आपके कंप्यूटर पर क्लिक करें एक ग्राफिकल यूजर पर्यावरण के लिए इस्तेमाल किया। 17 00:00:53,826 --> 00:00:55,700 आम तौर पर जब काम ग के साथ, हम वास्तव में कर रहे हैं 18 00:00:55,700 --> 00:00:59,965 साथ काम करने जा संकेत फ़ाइल files-- को stars-- 19 00:00:59,965 --> 00:01:02,090 एक छोटा सा के लिए छोड़कर हम एक जोड़ी के बारे में बात करते हैं 20 00:01:02,090 --> 00:01:04,560 कार्यों की कि फ़ाइल संकेत के साथ काम करते हैं। 21 00:01:04,560 --> 00:01:08,990 तुम सच में खोदा है की जरूरत नहीं है समझ संकेत में भी गहरी 22 00:01:08,990 --> 00:01:09,730 खुद को। 23 00:01:09,730 --> 00:01:12,870 एक छोटे नन्हा सा है हम उनके बारे में बात करेंगे, जहां 24 00:01:12,870 --> 00:01:18,090 लेकिन आम तौर पर संकेत फाइल और संकेत, परस्पर, जबकि 25 00:01:18,090 --> 00:01:20,290 वास्तव में एक ही बात नहीं कर रहे हैं। 26 00:01:20,290 --> 00:01:22,440 >> अब मैं जब क्या मतलब है मैं लगातार डेटा कहते हो? 27 00:01:22,440 --> 00:01:23,650 लगातार डेटा क्या है? 28 00:01:23,650 --> 00:01:25,232 हम इसके बारे में क्यों परवाह करते हैं? 29 00:01:25,232 --> 00:01:27,190 कि, उदाहरण के लिए, कहो आप एक प्रोग्राम चला रहे हैं 30 00:01:27,190 --> 00:01:29,850 या आप फिर से लिखा गया है एक एक खेल है कि कार्यक्रम, 31 00:01:29,850 --> 00:01:32,960 और आप ट्रैक रखना चाहते हैं उपयोगकर्ता की चाल के सभी की 32 00:01:32,960 --> 00:01:36,620 इसलिए कुछ गलत हो जाता है कि हो सकता है अगर, आप खेल के बाद फाइल की समीक्षा कर सकते हैं। 33 00:01:36,620 --> 00:01:39,970 यही कारण है कि जब हम हम क्या मतलब है लगातार डेटा के बारे में बात करते हैं। 34 00:01:39,970 --> 00:01:43,930 >> चलाने का पाठ्यक्रम में अपने कार्यक्रम, एक फाइल बनाई गई है। 35 00:01:43,930 --> 00:01:45,680 और जब अपने कार्यक्रम चलना बंद कर दिया गया है, 36 00:01:45,680 --> 00:01:48,689 उस फ़ाइल को अभी भी अपने सिस्टम पर मौजूद है। 37 00:01:48,689 --> 00:01:50,230 और हम इसे देखो और यह जांच कर सकते हैं। 38 00:01:50,230 --> 00:01:53,670 और इतना है कि कार्यक्रम के लिए स्थापित किया जाएगा कुछ लगातार डेटा बनाया है, 39 00:01:53,670 --> 00:01:57,390 डेटा कार्यक्रम के बाद अस्तित्व चल रहा समाप्त हो गया है। 40 00:01:57,390 --> 00:02:02,320 >> अब काम है कि इन कार्यों के सभी फाइल बनाने और जोड़ तोड़ के साथ 41 00:02:02,320 --> 00:02:04,940 उन्हें विभिन्न तरीकों से मानक io.h में रहते हैं, 42 00:02:04,940 --> 00:02:08,210 जो एक हेडर फाइल है कि आप की संभावना पौंड किया गया है 43 00:02:08,210 --> 00:02:10,910 सुंदर के शीर्ष पर सहित अपने कार्यक्रमों की ज्यादा सभी 44 00:02:10,910 --> 00:02:14,130 इसके बारे में एक होता है क्योंकि हमारे लिए सबसे उपयोगी कार्यों, 45 00:02:14,130 --> 00:02:16,130 भी देता है कि printf, मानक io.h. में रहती है 46 00:02:16,130 --> 00:02:20,400 तो आप शामिल पौंड की जरूरत नहीं है किसी भी अतिरिक्त फ़ाइलों को शायद 47 00:02:20,400 --> 00:02:23,540 आदेश में फ़ाइल संकेत के साथ काम करने के लिए। 48 00:02:23,540 --> 00:02:29,980 >> अब हर एक फ़ाइल सूचक समारोह, या हर एक फ़ाइल मैं / हे, इनपुट आउटपुट 49 00:02:29,980 --> 00:02:33,310 समारोह, एक के रूप में स्वीकार करता है उसके मापदंडों या आदानों की 50 00:02:33,310 --> 00:02:35,822 सिवाय एक फ़ाइल pointer-- एक के लिए, fopen, जो 51 00:02:35,822 --> 00:02:38,280 आप फाइल को पाने के लिए क्या उपयोग है पहली जगह में सूचक। 52 00:02:38,280 --> 00:02:41,010 लेकिन अगर आप खोल दिया है के बाद फाइल और आप फ़ाइल संकेत मिलता है, 53 00:02:41,010 --> 00:02:43,510 तुम तो उन के रूप में पारित कर सकते हैं विभिन्न कार्यों के लिए तर्क 54 00:02:43,510 --> 00:02:46,720 हम इस बारे में बात करने जा रहे हैं आज, साथ ही कई अन्य लोगों के 55 00:02:46,720 --> 00:02:48,520 इतना है कि आप फाइलों के साथ काम कर सकते हैं। 56 00:02:48,520 --> 00:02:50,980 >> इसलिए छह सुंदर देखते हैं आम बुनियादी वाले 57 00:02:50,980 --> 00:02:52,870 हम आज के बारे में बात करने जा रहे हैं। 58 00:02:52,870 --> 00:02:57,160 fopen और उसके साथी समारोह fclose, fgetc 59 00:02:57,160 --> 00:03:02,670 और उसके साथी समारोह fputc, और fread और उसके साथी समारोह, 60 00:03:02,670 --> 00:03:03,820 fwrite। 61 00:03:03,820 --> 00:03:05,180 तो चलो यह सही में मिलता है। 62 00:03:05,180 --> 00:03:07,050 >> fopen-- यह क्या करता है? 63 00:03:07,050 --> 00:03:10,050 खैर, यह एक फ़ाइल को खोलता है और यह यह करने के लिए आप एक फ़ाइल सूचक देता है, 64 00:03:10,050 --> 00:03:14,000 ताकि आप तो यह है कि उपयोग कर सकते हैं एक तर्क के रूप में सूचक दायर 65 00:03:14,000 --> 00:03:16,730 अन्य फाइल आई / ओ कार्यों में से किसी को। 66 00:03:16,730 --> 00:03:19,100 सबसे महत्वपूर्ण बात fopen के साथ याद करने के लिए 67 00:03:19,100 --> 00:03:24,222 आप खोल दिया है कि उसके बाद फाइल या यहां एक तरह एक फोन कर दिया, 68 00:03:24,222 --> 00:03:26,930 आपको यह सुनिश्चित करने के लिए जांच की जरूरत है कि तुम वापस मिल गया है कि सूचक 69 00:03:26,930 --> 00:03:28,320 अशक्त के बराबर नहीं है। 70 00:03:28,320 --> 00:03:31,320 आप वीडियो पर नहीं देखा गया है संकेत दिए गए, यह समझ में नहीं बना सकता है। 71 00:03:31,320 --> 00:03:35,639 लेकिन अगर आप कोशिश करते हैं और भिन्नता है, तो एक शून्य सूचक याद करते हैं, 72 00:03:35,639 --> 00:03:38,180 अपने कार्यक्रम शायद भुगतना होगा एक विभाजन [सुनाई]। 73 00:03:38,180 --> 00:03:40,540 हमें यकीन है कि बनाना चाहते हम एक वैध सूचक वापस मिल गया। 74 00:03:40,540 --> 00:03:43,665 समय के विशाल बहुमत हम करेंगे वापस एक वैध सूचक मिल गया है 75 00:03:43,665 --> 00:03:45,280 और यह एक समस्या नहीं होगी। 76 00:03:45,280 --> 00:03:46,760 >> तो कैसे हम एक कॉल fopen के लिए बनाते हैं? 77 00:03:46,760 --> 00:03:48,051 यह इस तरह से बहुत ज्यादा लग रहा है। 78 00:03:48,051 --> 00:03:52,690 एक सामान्य किया जा रहा ptr ptr-- फ़ाइल स्टार pointer-- fopen फ़ाइल के लिए नाम 79 00:03:52,690 --> 00:03:57,300 और हम दो बातों में एक फ़ाइल नाम पारित और एक ऑपरेशन हम शुरू करना चाहते हैं। 80 00:03:57,300 --> 00:04:01,690 इसलिए हम की तरह लग रहा है कि एक फोन हो सकता है है- फ़ाइल स्टार पीटीआर 1 fopen के बराबर होती है 81 00:04:01,690 --> 00:04:04,040 file1.txt। 82 00:04:04,040 --> 00:04:07,020 और मुझे चुन लिया आपरेशन आर है। 83 00:04:07,020 --> 00:04:08,639 >> तो क्या आप आर यहाँ लगता है? 84 00:04:08,639 --> 00:04:11,180 चीजों की तरह क्या कर रहे हैं हम फाइल करने के लिए ऐसा करने में सक्षम हो सकता है? 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 तो आर ऑपरेशन है कि हम हम एक फ़ाइल को पढ़ने के लिए चाहते हैं जब चुनें। 87 00:04:17,500 --> 00:04:20,260 इसलिए हम मूल रूप से जब होगा हम इस तरह से एक फोन करना 88 00:04:20,260 --> 00:04:25,440 अपने आप को एक फ़ाइल सूचक हो रही हो हम तो जानकारी पढ़ सकता है कि इस तरह के 89 00:04:25,440 --> 00:04:27,770 file1.txt से। 90 00:04:27,770 --> 00:04:34,190 >> इसी तरह, हम फ़ाइल 2.txt खोल सकता है ptr2 लिखने के लिए और इसलिए हम पारित कर सकते हैं, 91 00:04:34,190 --> 00:04:38,210 मैं यहाँ बनाए गए फ़ाइल सूचक, किसी भी कार्य के लिए एक तर्क के रूप में है कि 92 00:04:38,210 --> 00:04:40,080 एक फाइल करने के लिए जानकारी लिखता है। 93 00:04:40,080 --> 00:04:43,767 और लेखन के समान नहीं है, यह भी विकल्प के लिए एक, संलग्न करने के लिए। 94 00:04:43,767 --> 00:04:45,600 के बीच भिन्नता लेखन और जोड़कर 95 00:04:45,600 --> 00:04:50,920 होने के नाते आप एक फाइल करने के लिए लिख जब कि, यदि आप लेखन के लिए fopen के लिए एक फोन करते हैं तो 96 00:04:50,920 --> 00:04:54,761 और उस फ़ाइल को पहले से ही यह बात है, मौजूद है पूरी फ़ाइल अधिलेखित करने के लिए जा रहा है। 97 00:04:54,761 --> 00:04:56,510 यह शुरू हो रहा है बिलकुल शुरूआत में, 98 00:04:56,510 --> 00:04:58,820 सभी जानकारी को हटाने कि पहले से ही नहीं है। 99 00:04:58,820 --> 00:05:02,210 >> आप जोड़कर लिए इसे खोलने जबकि अगर, यह फाइल के अंत के लिए जाना जाएगा 100 00:05:02,210 --> 00:05:04,340 पहले से ही पाठ है कि अगर वहाँ यह या उस में जानकारी, 101 00:05:04,340 --> 00:05:06,040 और यह तो शुरू कर देंगे वहां से लेखन। 102 00:05:06,040 --> 00:05:08,570 तो आप में से किसी को खोना नहीं होगा आप पहले किया है जानकारी। 103 00:05:08,570 --> 00:05:12,110 आप लिख सकते हैं या संलग्न करना चाहते हैं प्रकार की स्थिति पर निर्भर करता है। 104 00:05:12,110 --> 00:05:16,840 लेकिन आप शायद पता चल जाएगा जब समय आता है सही ऑपरेशन है। 105 00:05:16,840 --> 00:05:18,020 तो यह है कि fopen है। 106 00:05:18,020 --> 00:05:18,930 >> क्या fclose के बारे में? 107 00:05:18,930 --> 00:05:21,600 खैर, बहुत आसानी से, fclose सिर्फ फ़ाइल सूचक स्वीकार करता है। 108 00:05:21,600 --> 00:05:24,000 और आप उम्मीद कर सकते हैं, यह है कि फाइल बंद कर देता है। 109 00:05:24,000 --> 00:05:29,270 हम एक फाइल बंद कर दिया है और एक बार, हम नहीं कर सकते किसी भी अधिक फ़ाइल आई / ओ कार्यों का निष्पादन 110 00:05:29,270 --> 00:05:31,420 पढ़ने या उस फ़ाइल पर, लेखन। 111 00:05:31,420 --> 00:05:36,444 हम फिर से खोलने के लिए है क्रम में एक और समय फाइल 112 00:05:36,444 --> 00:05:38,610 के साथ काम जारी रखने के लिए यह मैं / हे कार्यों का उपयोग कर। 113 00:05:38,610 --> 00:05:41,520 हम कर रहे हैं तो fclose साधन इस फाइल के साथ काम कर रहे हैं। 114 00:05:41,520 --> 00:05:44,690 और हम में पारित करने के लिए सभी की जरूरत है एक फ़ाइल सूचक का नाम है। 115 00:05:44,690 --> 00:05:50,010 एक जोड़ी पहले स्लाइड पर तो, हम पढ़ने के लिए fopened फ़ाइल 1 डॉट पाठ 116 00:05:50,010 --> 00:05:52,854 और हम उस सौंपा ptr1 करने के लिए सूचक फ़ाइल। 117 00:05:52,854 --> 00:05:55,020 अब हम हम कर रहे हैं का फैसला किया है उस फ़ाइल से पढ़ कर। 118 00:05:55,020 --> 00:05:56,561 हम इसके साथ किसी भी अधिक करने की ज़रूरत नहीं है। 119 00:05:56,561 --> 00:05:58,890 हम सिर्फ fclose ptr1 कर सकते हैं। 120 00:05:58,890 --> 00:06:01,950 और इसी तरह, हम कर सकते थे अन्य लोगों को fclose। 121 00:06:01,950 --> 00:06:02,450 ठीक है। 122 00:06:02,450 --> 00:06:03,700 तो यह है कि उद्घाटन और समापन है। 123 00:06:03,700 --> 00:06:05,780 उन दो बुनियादी रहे हैं संचालन शुरू। 124 00:06:05,780 --> 00:06:08,050 >> अब हम वास्तव में करना चाहते हैं कुछ दिलचस्प बातें करते हैं, 125 00:06:08,050 --> 00:06:11,940 और पहला समारोह है कि हम करेंगे कि fgetc-- है कि क्या करेंगे देखना 126 00:06:11,940 --> 00:06:14,110 एक चरित्र मिलता फ़ाइल। 127 00:06:14,110 --> 00:06:17,350 यही कारण है कि आम तौर पर fgetc क्या है अनुवाद करने के लिए होगा। 128 00:06:17,350 --> 00:06:20,190 जीवन में अपने लक्ष्य के लिए है अगले चरित्र पढ़ा, 129 00:06:20,190 --> 00:06:22,079 या यह अपने बहुत है, तो fgetc के लिए पहली कॉल 130 00:06:22,079 --> 00:06:23,870 एक खास फाइल के लिए, पहले चरित्र। 131 00:06:23,870 --> 00:06:26,210 लेकिन फिर उसके बाद, आप अगले एक मिल 132 00:06:26,210 --> 00:06:31,500 उस फ़ाइल के अगले ही चरित्र, एक चरित्र चर में और यह स्टोर। 133 00:06:31,500 --> 00:06:34,490 हम यहाँ किया है के रूप में, चार सीएच, fgetc के बराबर होती है 134 00:06:34,490 --> 00:06:36,389 एक फ़ाइल सूचक के नाम से गुजरती हैं। 135 00:06:36,389 --> 00:06:38,180 फिर, यह बहुत है याद करने के लिए यहाँ महत्वपूर्ण 136 00:06:38,180 --> 00:06:41,430 आदेश में करने के लिए कि इस ऑपरेशन सफल 137 00:06:41,430 --> 00:06:45,690 फ़ाइल सूचक में ही होना चाहिए पढ़ने के लिए खोल दिया गया। 138 00:06:45,690 --> 00:06:50,589 हम एक फ़ाइल से एक चरित्र नहीं पढ़ सकते हैं हम लेखन के लिए खोला गया है कि सूचक। 139 00:06:50,589 --> 00:06:52,630 तो यह है कि में से एक है fopen की सीमाओं, है ना? 140 00:06:52,630 --> 00:06:55,470 हम प्रतिबंधित करने के लिए है खुद ही करने के लिए प्रदर्शन 141 00:06:55,470 --> 00:06:57,710 एक फ़ाइल सूचक के साथ एक ऑपरेशन। 142 00:06:57,710 --> 00:07:00,220 हम पढ़ने के लिए चाहता था और एक ही फाइल से लिखते हैं, 143 00:07:00,220 --> 00:07:03,840 हम खुले दो अलग-अलग होता है एक ही file-- करने के लिए फ़ाइल संकेत 144 00:07:03,840 --> 00:07:05,670 पढ़ने के लिए एक, लेखन के लिए एक। 145 00:07:05,670 --> 00:07:08,400 >> तो फिर, एक ही कारण मैं अब लगता है कि ऊपर लाना 146 00:07:08,400 --> 00:07:11,920 हम एक कॉल करने के लिए जा रहे हैं, क्योंकि fgetc करने के लिए, उस फ़ाइल सूचक होगा 147 00:07:11,920 --> 00:07:14,172 पढ़ने के लिए खोल दिया गया। 148 00:07:14,172 --> 00:07:15,880 और फिर बहुत आसानी से, सब हम क्या करने की जरूरत है 149 00:07:15,880 --> 00:07:17,546 फ़ाइल सूचक के नाम से गुजरती है। 150 00:07:17,546 --> 00:07:21,060 तो चार CH fgetc ptr1 बराबर होती है। 151 00:07:21,060 --> 00:07:23,200 >> यही कारण है कि हमें प्राप्त करने के लिए जा रहा है अगले character-- 152 00:07:23,200 --> 00:07:25,575 या फिर यह पहली बार है, तो हम इस फोन बनाया है समय, 153 00:07:25,575 --> 00:07:29,750 की पहली character-- जो कुछ भी फ़ाइल ptr1 द्वारा की ओर इशारा किया है। 154 00:07:29,750 --> 00:07:32,210 उस फ़ाइल को 1 डॉट पाठ था कि स्मरण करो। 155 00:07:32,210 --> 00:07:36,490 यह इस बात का पहला वर्ण मिलेगा और हम चर चर्चा में यह दुकान होगी। 156 00:07:36,490 --> 00:07:37,941 बहुत सीधा। 157 00:07:37,941 --> 00:07:40,190 इसलिए हम केवल तीन पर देखा है कार्य करता है और हम पहले से ही 158 00:07:40,190 --> 00:07:43,070 मस्त कुछ कर सकते हैं। 159 00:07:43,070 --> 00:07:46,320 >> हम इस क्षमता लेते हैं तो एक चरित्र हो रही है की 160 00:07:46,320 --> 00:07:48,943 और हम पाश इसलिए it-- हम पात्रों पाने के लिए जारी 161 00:07:48,943 --> 00:07:51,390 एक फ़ाइल से अधिक है और पर और over-- अब हम 162 00:07:51,390 --> 00:07:54,500 हर एक को पढ़ सकता है एक फ़ाइल के चरित्र। 163 00:07:54,500 --> 00:07:58,670 और हम हर चरित्र प्रिंट हम इसे पढ़ने के तुरंत बाद, 164 00:07:58,670 --> 00:08:01,960 अब हम एक फ़ाइल से पढ़ा है और स्क्रीन के लिए अपनी सामग्री मुद्रित। 165 00:08:01,960 --> 00:08:05,610 हम प्रभावी रूप से श्रेणीबद्ध किया है स्क्रीन पर उस फ़ाइल। 166 00:08:05,610 --> 00:08:09,670 और वह है क्या लिनक्स कमांड बिल्ली करता है। 167 00:08:09,670 --> 00:08:13,250 >> आप फ़ाइल के नाम में बिल्ली लिखते हैं, तो यह सारी सामग्री को बाहर प्रिंट होगा 168 00:08:13,250 --> 00:08:15,160 अपने टर्मिनल विंडो में फ़ाइल की। 169 00:08:15,160 --> 00:08:19,010 और यहाँ तो इस छोटी सी पाश, कोड के केवल तीन लाइनों, 170 00:08:19,010 --> 00:08:23,270 लेकिन इसे प्रभावी ढंग से डुप्लिकेट लिनक्स कमांड बिल्ली। 171 00:08:23,270 --> 00:08:25,210 तो इस वाक्य रचना हो सकता है एक अजीब सा लग 172 00:08:25,210 --> 00:08:26,670 लेकिन यहां क्या हो रहा है। 173 00:08:26,670 --> 00:08:31,460 चर्चा fgetc के बराबर होती है, वहीं पीटीआर नहीं है यह एक पूरी कौर है EOF-- के बराबर है, 174 00:08:31,460 --> 00:08:34,669 लेकिन यह सिर्फ तोड़ने के नीचे इसलिए यह वाक्य रचना पर स्पष्ट है। 175 00:08:34,669 --> 00:08:37,169 मैं इसे समेकित किया है अंतरिक्ष की खातिर, 176 00:08:37,169 --> 00:08:39,049 यह एक छोटा सा है, हालांकि वाक्य रचना से मुश्किल। 177 00:08:39,049 --> 00:08:41,194 >> तो हरी सही में यह हिस्सा अब, यह क्या कर रही है? 178 00:08:41,194 --> 00:08:42,860 वैसे, यह सिर्फ हमारे fgetc कॉल, है ना? 179 00:08:42,860 --> 00:08:44,530 हम पहले कि देखा है। 180 00:08:44,530 --> 00:08:49,500 यह एक प्राप्त है फ़ाइल से चरित्र। 181 00:08:49,500 --> 00:08:53,220 तो फिर हम उस तुलना EOF के खिलाफ चरित्र। 182 00:08:53,220 --> 00:08:57,470 EOF है कि एक विशेष मूल्य है मानक io.h में परिभाषित किया जो 183 00:08:57,470 --> 00:08:59,390 फ़ाइल चरित्र का अंत है। 184 00:08:59,390 --> 00:09:03,450 तो बुनियादी तौर पर ऐसा करने के लिए क्या हो रहा है इस लूप एक चरित्र पढ़ा होगा है, 185 00:09:03,450 --> 00:09:07,445 , EOF के लिए यह तुलना फ़ाइल चरित्र के अंत। 186 00:09:07,445 --> 00:09:10,070 वे मैच नहीं है, इसलिए हम नहीं फ़ाइल के अंत तक पहुँच 187 00:09:10,070 --> 00:09:11,490 हम उस चरित्र का प्रिंट आउट करेंगे। 188 00:09:11,490 --> 00:09:13,740 तो फिर हम करने के लिए वापस जाना होगा फिर पाश की शुरुआत। 189 00:09:13,740 --> 00:09:18,310 हम एक चरित्र मिल जाएगा, जाँच EOF के खिलाफ इतने पर इसे बाहर प्रिंट, और 190 00:09:18,310 --> 00:09:21,094 और आगे और आगे, कि रास्ते में के माध्यम से पाशन 191 00:09:21,094 --> 00:09:22,760 हम फाइल के अंत में पहुँच गए हैं जब तक। 192 00:09:22,760 --> 00:09:24,593 और फिर उस बिंदु से, हम मुद्रित होगा 193 00:09:24,593 --> 00:09:26,210 फ़ाइल की संपूर्ण सामग्री बाहर। 194 00:09:26,210 --> 00:09:29,450 तो फिर, हम केवल देखा है fopen, fclose, और fgetc 195 00:09:29,450 --> 00:09:34,950 और पहले से ही हम नकल कर सकते हैं एक लिनक्स टर्मिनल कमांड। 196 00:09:34,950 --> 00:09:38,850 >> जैसा कि मैंने शुरू में कहा था, हम fgetc और fputc था, 197 00:09:38,850 --> 00:09:41,860 और fputc साथी था fgetc का कार्य करते हैं। 198 00:09:41,860 --> 00:09:44,880 और हां, तो, जैसा कि आप कल्पना कर सकते हैं यह लेखन बराबर है। 199 00:09:44,880 --> 00:09:49,440 यह हमें एक लिखने के लिए अनुमति देता है एक फाइल करने के लिए एक चरित्र। 200 00:09:49,440 --> 00:09:53,290 >> फिर, चेतावनी जा रहा है, बस यह fgetc के साथ था, जैसे फ़ाइल 201 00:09:53,290 --> 00:09:56,660 हम होगा करने के लिए लिख रहे हैं कि कर दिया गया लिखने के लिए या जोड़कर के लिए खोला गया। 202 00:09:56,660 --> 00:10:00,820 हम कोशिश करते हैं और एक फाइल पर fputc का उपयोग करते हैं हम पढ़ने के लिए खोल दिया है कि, 203 00:10:00,820 --> 00:10:02,760 हम पीड़ित के लिए जा रहे हैं एक गलती की एक सा है। 204 00:10:02,760 --> 00:10:04,440 लेकिन कॉल बहुत आसान है। 205 00:10:04,440 --> 00:10:08,000 fputc राजधानी एक ptr2, सभी ऐसा करने के लिए जा रहा है यह है 206 00:10:08,000 --> 00:10:12,040 पत्र लिखने जा रहा एक फ़ाइल में 2 बिंदी में 207 00:10:12,040 --> 00:10:14,760 के नाम था जो पाठ, हम खोला और सौंपा है कि फाइल 208 00:10:14,760 --> 00:10:17,280 सूचक ptr2 करने के लिए। 209 00:10:17,280 --> 00:10:20,430 तो हम एक लिखने जा रहे हैं राजधानी एक 2 डॉट पाठ फ़ाइल के लिए। 210 00:10:20,430 --> 00:10:24,592 और हम एक विस्मयादिबोधक लिख देंगे 3 डॉट फ़ाइल को इंगित 211 00:10:24,592 --> 00:10:27,330 ptr3 द्वारा की ओर इशारा किया गया था, जो पाठ,। 212 00:10:27,330 --> 00:10:29,730 तो फिर, यहाँ बहुत सीधा। 213 00:10:29,730 --> 00:10:32,727 >> लेकिन अब हम एक और बात कर सकते हैं। 214 00:10:32,727 --> 00:10:34,560 हम इस उदाहरण है हम बस पर जा रहे थे 215 00:10:34,560 --> 00:10:38,950 बिल्ली को दोहराने में सक्षम होने के बारे में लिनक्स कमांड, बाहर है कि प्रिंट एक 216 00:10:38,950 --> 00:10:40,500 स्क्रीन करने के लिए। 217 00:10:40,500 --> 00:10:43,510 खैर, अब हम क्षमता है कि फाइलों से पात्रों को पढ़ने के लिए 218 00:10:43,510 --> 00:10:46,590 और, फाइल करने के लिए वर्ण लिखने यही कारण है कि हम सिर्फ इतना है कि विकल्प नहीं है 219 00:10:46,590 --> 00:10:50,720 fputc के लिए एक फोन के साथ printf करने के लिए कहते हैं। 220 00:10:50,720 --> 00:10:54,090 >> और अब हम सी.पी. दोहराया गया है, एक बहुत ही बुनियादी लिनक्स आदेश 221 00:10:54,090 --> 00:10:59,100 हम जिस तरह से लंबे समय के बारे में बात की है कि पहले लिनक्स में वीडियो हासिल है। 222 00:10:59,100 --> 00:11:01,070 हम प्रभावी है सही है कि यहाँ दोहराया। 223 00:11:01,070 --> 00:11:04,790 हम एक चरित्र पढ़ रहे हैं और उसके बाद हम कर रहे हैं एक और फाइल करने के लिए कि चरित्र लेखन। 224 00:11:04,790 --> 00:11:07,660 एक फ़ाइल से पढ़ना, लेखन और अधिक से अधिक एक और, करने के लिए 225 00:11:07,660 --> 00:11:11,350 और फिर से हम EOF मारा जब तक। 226 00:11:11,350 --> 00:11:14,250 हम का अंत करने के लिए मिल गया है दाखिल हम से नकल करने की कोशिश कर रहे हैं। 227 00:11:14,250 --> 00:11:18,500 और कहा कि हम सब लिखा होगा पात्रों में से हम फ़ाइल की जरूरत है 228 00:11:18,500 --> 00:11:19,500 हम करने के लिए लिख रहे हैं कि। 229 00:11:19,500 --> 00:11:24,270 इसलिए इस सी.पी., लिनक्स प्रतिलिपि आदेश है। 230 00:11:24,270 --> 00:11:26,550 >> के बहुत शुरुआत में इस वीडियो में, मैं चेतावनी था 231 00:11:26,550 --> 00:11:29,840 हम एक बात करेंगे कि संकेत के बारे में थोड़ा सा। 232 00:11:29,840 --> 00:11:32,480 हम कर रहे हैं, जहां यहाँ विशेष रूप से है संकेत के बारे में बात करने जा रहा 233 00:11:32,480 --> 00:11:34,800 इसके अलावा में संकेत दायर करने के लिए। 234 00:11:34,800 --> 00:11:37,870 इसलिए इस समारोह डरावना की तरह लग रहा है। 235 00:11:37,870 --> 00:11:39,120 यह कई मापदंडों मिल गया है। 236 00:11:39,120 --> 00:11:40,430 यहाँ पर जा रहा एक बहुत कुछ है। 237 00:11:40,430 --> 00:11:42,760 अलग से एक बहुत कुछ है रंग और ग्रंथों। 238 00:11:42,760 --> 00:11:47,100 लेकिन वास्तव में, यह सिर्फ है fgetc के जेनेरिक संस्करण 239 00:11:47,100 --> 00:11:50,110 कि हमें किसी भी प्राप्त करने की अनुमति देता है जानकारी की राशि। 240 00:11:50,110 --> 00:11:53,560 यह हम कर रहे हैं, तो एक सा अक्षम किया जा सकता है एक समय में पात्रों से एक हो रही है, 241 00:11:53,560 --> 00:11:55,770 फ़ाइल के माध्यम से पुनरावृति एक समय में एक चरित्र। 242 00:11:55,770 --> 00:12:00,230 इसे पाने के लिए अच्छे नहीं हो सकते हैं एक समय में एक बार या 500 पर 100? 243 00:12:00,230 --> 00:12:03,250 >> खैर, fread और उसके साथी समारोह fwrite, हम जिसके बारे में बात करेंगे 244 00:12:03,250 --> 00:12:05,490 एक दूसरे में, हमें सिर्फ इतना है कि क्या करने की अनुमति देते हैं। 245 00:12:05,490 --> 00:12:08,480 हम एक मनमाना राशि पढ़ सकते हैं एक फ़ाइल से जानकारी की 246 00:12:08,480 --> 00:12:10,290 और हम कहीं अस्थायी रूप से यह दुकान। 247 00:12:10,290 --> 00:12:12,980 इसके बजाय सिर्फ करने में सक्षम होने की एक एकल चर में इसे फिट, 248 00:12:12,980 --> 00:12:15,790 हम एक सरणी में यह स्टोर करने के लिए आवश्यकता हो सकती है। 249 00:12:15,790 --> 00:12:19,980 और हां, तो हम चार में पारित तर्क एक सूचक fread-- को 250 00:12:19,980 --> 00:12:23,940 हम कर रहे हैं, जहां पांच को जानकारी स्टोर करने के लिए जा रहा है, 251 00:12:23,940 --> 00:12:29,180 कैसे जानकारी के प्रत्येक इकाई बड़े हो सकता है, जानकारी के कितने इकाइयों 252 00:12:29,180 --> 00:12:35,192 हम हासिल करना चाहते हैं, और से जो फ़ाइल हम उन्हें प्राप्त करना चाहते हैं। 253 00:12:35,192 --> 00:12:37,150 शायद सबसे अच्छा सचित्र यहां एक उदाहरण के साथ। 254 00:12:37,150 --> 00:12:41,640 तो चलो हम घोषणा करते हैं कि हम कहते हैं 10 पूर्णांकों की एक सरणी। 255 00:12:41,640 --> 00:12:45,080 हम बस पर घोषित किया है मनमाने ढंग से हो चुकी आगमन 10 int। 256 00:12:45,080 --> 00:12:46,970 तो यह है कि बहुत सीधा है। 257 00:12:46,970 --> 00:12:51,970 अब क्या हम हालांकि कर रहे है frecall हम int के आकार पढ़ रहे है 258 00:12:51,970 --> 00:12:54,180 कई बार जानकारी के 10 बाइट्स। 259 00:12:54,180 --> 00:12:59,040 पूर्णांक किया जा रहा है के आकार है कि four-- सी में एक पूर्णांक के आकार। 260 00:12:59,040 --> 00:13:02,790 >> तो हम क्या कर रहे हैं हम पढ़ रहे है जानकारी के लायक 40 बाइट्स 261 00:13:02,790 --> 00:13:05,850 फ़ाइल से पीटीआर द्वारा की ओर इशारा किया। 262 00:13:05,850 --> 00:13:08,600 और हम उन भंडारण कर रहे हैं 40 बाइट्स कहीं 263 00:13:08,600 --> 00:13:12,080 हम अलग सेट है जहां स्मृति के लायक 40 बाइट्स। 264 00:13:12,080 --> 00:13:15,970 सौभाग्य से, हम पहले से ही ऐसा कर चुका हूँ उस सरणी, वहीं आगमन की घोषणा। 265 00:13:15,970 --> 00:13:19,770 यही धारण करने में सक्षम है 10 चार बाइट इकाइयों। 266 00:13:19,770 --> 00:13:22,860 कुल में तो, यह 40 पकड़ कर सकते हैं बाइट्स जानकारी के लायक। 267 00:13:22,860 --> 00:13:26,540 और अब हम 40 बाइट्स पढ़ रहे हैं फ़ाइल से जानकारी की, 268 00:13:26,540 --> 00:13:30,330 और हम एआरआर में भंडारण कर रहे हैं। 269 00:13:30,330 --> 00:13:35,470 >> संकेत पर वीडियो से याद है कि इस तरह के आगमन के रूप में एक सरणी के नाम पर, 270 00:13:35,470 --> 00:13:38,370 वास्तव में सिर्फ एक सूचक है अपनी पहली तत्व करने के लिए। 271 00:13:38,370 --> 00:13:43,680 इसलिए हम वहाँ एआरआर में पारित करते हैं, हम एक सूचक में गुजर रहा है, वास्तव में, कर रहे हैं। 272 00:13:43,680 --> 00:13:46,120 >> इसी प्रकार हम है- क्या कर सकते हैं हम जरूरी नहीं है 273 00:13:46,120 --> 00:13:51,200 ढेर पर हमारे बफर बचाने की जरूरत है। 274 00:13:51,200 --> 00:13:54,990 हम यह भी गतिशील आवंटित सकता एक malloc का उपयोग कर, इस तरह बफर। 275 00:13:54,990 --> 00:13:57,340 जब हम, याद रखें गतिशील स्मृति आवंटित, 276 00:13:57,340 --> 00:14:00,550 हम पर यह बचत कर रहे हैं ढेर, नहीं हो चुकी है। 277 00:14:00,550 --> 00:14:02,110 लेकिन यह अभी भी एक बफर है। 278 00:14:02,110 --> 00:14:06,810 >> यह अभी भी इस मामले में है जानकारी के 640 बाइट्स पकड़े 279 00:14:06,810 --> 00:14:09,230 एक डबल आठ बाइट्स तक ले जाता है। 280 00:14:09,230 --> 00:14:11,570 और हम उनमें से 80 के लिए पूछ रहे हैं। 281 00:14:11,570 --> 00:14:13,770 हम अंतरिक्ष के लिए चाहते हैं 80 युगल धारण करने के लिए। 282 00:14:13,770 --> 00:14:17,210 तो 80 गुना 8 640 बाइट्स जानकारी है। 283 00:14:17,210 --> 00:14:21,880 और fread है कि कॉल है जानकारी के 640 बाइट्स का संग्रह 284 00:14:21,880 --> 00:14:27,770 फ़ाइल द्वारा उठाई से ptr और arr2 में अब यह भंडारण। 285 00:14:27,770 --> 00:14:32,770 >> अब हम भी fread इलाज कर सकते हैं सिर्फ fgetc के लिए एक फोन की तरह। 286 00:14:32,770 --> 00:14:37,140 इस मामले में, हम सिर्फ करने के लिए कोशिश कर रहे हैं फ़ाइल से एक चरित्र मिलता है। 287 00:14:37,140 --> 00:14:40,070 और हम एक की जरूरत नहीं सरणी एक चरित्र धारण करने के लिए। 288 00:14:40,070 --> 00:14:43,170 हम बस में स्टोर कर सकते हैं एक चरित्र चर। 289 00:14:43,170 --> 00:14:46,390 >> पकड़ है, हालांकि, वह यह है कि हम सिर्फ एक चर है जब, 290 00:14:46,390 --> 00:14:50,290 हम में पारित करने की जरूरत कि चर का पता 291 00:14:50,290 --> 00:14:52,550 याद है कि क्योंकि fread को पहला तर्क 292 00:14:52,550 --> 00:14:59,210 स्थान और स्मृति के लिए एक संकेत है हम जानकारी स्टोर करने के लिए चाहते हैं। 293 00:14:59,210 --> 00:15:01,550 फिर, एक के नाम सरणी एक सूचक है। 294 00:15:01,550 --> 00:15:04,200 इसलिए हम एम्परसेंड सरणी क्या करने की जरूरत नहीं है। 295 00:15:04,200 --> 00:15:07,270 लेकिन सी, चरित्र ग यहाँ, एक सरणी नहीं है। 296 00:15:07,270 --> 00:15:08,390 यह सिर्फ एक चर है। 297 00:15:08,390 --> 00:15:11,840 और इसलिए हम एक पारित करने की जरूरत एम्परसेंड ग इंगित करने के लिए 298 00:15:11,840 --> 00:15:15,350 कि हम चाहते हैं, जहां पता है कि सूचना के इस एक बाइट स्टोर करने के लिए, 299 00:15:15,350 --> 00:15:20,479 इस एक चरित्र है कि हम पीटीआर से एकत्रित कर रहे हैं। 300 00:15:20,479 --> 00:15:22,270 मैं माध्यम से जाना होगा Fwrite-- यह एक छोटे से अधिक 301 00:15:22,270 --> 00:15:25,440 quickly-- बहुत ज्यादा है fread की सटीक बराबर 302 00:15:25,440 --> 00:15:27,720 यह लिखने के लिए है सिवाय बजाय पढ़ने की, बस 303 00:15:27,720 --> 00:15:31,610 other-- तरह हम खुले लिया है और करीब एक चरित्र मिलता है, 304 00:15:31,610 --> 00:15:32,530 एक चरित्र लिखें। 305 00:15:32,530 --> 00:15:35,040 अब यह मनमाने ढंग से मिलता है राशि की जानकारी, 306 00:15:35,040 --> 00:15:37,170 सूचना के अधिकार मनमाना राशि। 307 00:15:37,170 --> 00:15:39,790 तो पहले की तरह, हम कर सकते हैं 10 पूर्णांकों की एक सरणी है 308 00:15:39,790 --> 00:15:43,210 जहां हम पहले से ही है जानकारी शायद, संग्रहीत। 309 00:15:43,210 --> 00:15:46,580 >> यह शायद कोड की कुछ लाइनों था कि इन दोनों के बीच जाना चाहिए 310 00:15:46,580 --> 00:15:49,990 मैं के साथ आगमन भरने जहां कुछ सार्थक। 311 00:15:49,990 --> 00:15:51,880 मैं 10 अलग पूर्णांकों के साथ भरें। 312 00:15:51,880 --> 00:15:54,920 और इसके बजाय, मैं क्या कर रहा हूँ कर रही आगमन से लिख रही है 313 00:15:54,920 --> 00:15:58,600 और आगमन से जानकारी एकत्रित। 314 00:15:58,600 --> 00:16:02,390 और मुझे लगता है कि जानकारी ले जा रहा हूँ और फाइल में डाल। 315 00:16:02,390 --> 00:16:05,410 >> तो बजाय इसे से की जा रही है बफर करने के लिए फ़ाइल, 316 00:16:05,410 --> 00:16:08,790 हम अभी से जा रहे हैं फाइल करने के लिए बफर। 317 00:16:08,790 --> 00:16:10,580 तो यह सिर्फ रिवर्स है। 318 00:16:10,580 --> 00:16:16,680 पहले की तरह तो फिर, हम कर सकते हैं यह भी स्मृति के ढेर हिस्सा है 319 00:16:16,680 --> 00:16:19,600 हम गतिशील है कि आवंटित की है और उस से पढ़ 320 00:16:19,600 --> 00:16:21,570 और फाइल करने के लिए कि लिखें। 321 00:16:21,570 --> 00:16:24,900 >> और हम भी एक एकल चर है एक बाइट धारण करने में सक्षम 322 00:16:24,900 --> 00:16:27,200 इस तरह के एक चरित्र के रूप में जानकारी की। 323 00:16:27,200 --> 00:16:29,830 लेकिन फिर, हम में पारित करने की जरूरत कि चर का पता 324 00:16:29,830 --> 00:16:31,840 हम इसे से पढ़ने के लिए चाहते हैं। 325 00:16:31,840 --> 00:16:35,280 इसलिए हम जानकारी लिख सकते हैं हम उस पते पर मिल 326 00:16:35,280 --> 00:16:39,050 फ़ाइल सूचक के लिए, पीटीआर। 327 00:16:39,050 --> 00:16:41,630 >> अन्य के बहुत सारे है महान फ़ाइल मैं / हे कार्यों 328 00:16:41,630 --> 00:16:44,650 कि इसके अलावा विभिन्न बातें करते हैं हम लोगों के बारे में आज बात की है। 329 00:16:44,650 --> 00:16:46,450 लोगों की एक जोड़ी आप उपयोगी मिल सकता है 330 00:16:46,450 --> 00:16:50,840 fgets और fputs हैं, जो बराबर हैं 331 00:16:50,840 --> 00:16:56,190 fgetc और fputc की लेकिन पढ़ने के लिए एक फ़ाइल से एक स्ट्रिंग। 332 00:16:56,190 --> 00:16:59,020 इसके बजाय एक ही चरित्र की, यह एक पूरे स्ट्रिंग पढ़ा होगा। 333 00:16:59,020 --> 00:17:02,940 मूल रूप से अनुमति देता है जो fprintf, आप फाइल को लिखने के लिए printf का उपयोग करने के लिए। 334 00:17:02,940 --> 00:17:05,619 आप क्या कर सकते हैं तो बस जैसे का उपयोग कर चर प्रतिस्थापन 335 00:17:05,619 --> 00:17:09,900 प्लेसहोल्डर्स प्रतिशत मैं और printf के साथ प्रतिशत डी, और इतने पर, 336 00:17:09,900 --> 00:17:14,690 आप इसी तरह से ले जा सकते हैं printf स्ट्रिंग और प्रिंट कुछ 337 00:17:14,690 --> 00:17:16,800 एक फाइल करने के लिए ऐसे ही। 338 00:17:16,800 --> 00:17:20,720 >> fseek-- आप एक डीवीडी प्लेयर है, तो मैं आमतौर पर here-- उपयोग सादृश्य है 339 00:17:20,720 --> 00:17:23,109 प्रकार के प्रयोग की तरह है आपके उल्टा और तेजी से आगे 340 00:17:23,109 --> 00:17:25,819 बटन की फिल्म चारों ओर ले जाने के लिए। 341 00:17:25,819 --> 00:17:28,369 इसी तरह, आप फ़ाइल के आसपास स्थानांतरित कर सकते हैं। 342 00:17:28,369 --> 00:17:30,250 अंदर चीजों में से एक उस फ़ाइल संरचना 343 00:17:30,250 --> 00:17:34,270 आप एक संकेत है कि ग बनाता है जहां से आप फ़ाइल में हैं। 344 00:17:34,270 --> 00:17:36,420 आप बहुत कम कर रहे हैं बाइट शून्य पर, शुरुआत? 345 00:17:36,420 --> 00:17:39,290 आप बाइट 100 पर कर रहे हैं, बाइट 1000, और इतने पर? 346 00:17:39,290 --> 00:17:44,340 आप मनमाने ढंग से स्थानांतरित करने के लिए fseek उपयोग कर सकते हैं आगे या पीछे कि सूचक। 347 00:17:44,340 --> 00:17:46,744 >> और फिर, ftell एक डीवीडी प्लेयर के समान है, 348 00:17:46,744 --> 00:17:49,660 बताता है कि एक छोटी सी घड़ी की तरह है आप कितने मिनट और सेकंड आप 349 00:17:49,660 --> 00:17:52,480 एक विशेष फिल्म में हैं। 350 00:17:52,480 --> 00:17:56,990 इसी तरह, ftell बताता है कि कैसे कई बाइट्स आप फ़ाइल में हैं। 351 00:17:56,990 --> 00:18:00,210 feof एक अलग संस्करण है की आप है कि क्या पता लगाने 352 00:18:00,210 --> 00:18:01,700 फ़ाइल के अंत पर पहुंच गया। 353 00:18:01,700 --> 00:18:03,600 और ferror एक समारोह है आप उपयोग कर सकते हैं 354 00:18:03,600 --> 00:18:06,959 कुछ है कि क्या पता लगाने के लिए एक फ़ाइल के साथ गलत काम कर चला गया। 355 00:18:06,959 --> 00:18:08,750 फिर, यह सिर्फ है सतह scratching। 356 00:18:08,750 --> 00:18:12,730 बहुत अधिक फ़ाइल आई / ओ वहाँ अभी भी मानक io.h. में कार्य 357 00:18:12,730 --> 00:18:16,620 लेकिन यह शायद आप मिल जाएगा फ़ाइल संकेत के साथ काम करना शुरू कर दिया। 358 00:18:16,620 --> 00:18:17,640 मैं डौग लॉयड हूँ। 359 00:18:17,640 --> 00:18:19,750 इस CS50 है। 360 00:18:19,750 --> 00:18:21,669