>> जेसन Hirschhorn: आपका स्वागत है, 6 सप्ताह के लिए हर कोई,.
मैं अच्छी तरह से जीवित आप सभी को देखने के लिए खुश हूँ और प्रश्नोत्तरी 0 के बाद, क्योंकि मुझे पता है कि
एक मोटा सा था.
लेकिन शुक्र है, आप सभी अविश्वसनीय रूप से अच्छा प्रदर्शन किया था.
और इसलिए यह बढ़िया है.
तुम मेरे अनुभाग में हैं, तो मैं सबसे दिया है आप पहले से ही अपने परीक्षाएँ बैक.
>> आप के एक जोड़े, मैं बैठक कर रहा हूँ कक्षा के बाद.
और तुम एक विस्तार के छात्र रहे हैं और अगर आप वापस अपनी प्रश्नोत्तरी नहीं मिला है
अभी तक, अपनी TF शायद इस पर काम कर रहा है और यह ग्रेडिंग, और यह वापस मिल जाएगा
आप करने के लिए शीघ्र ही.
जो कर रहे हैं तो मेरा विस्तार छात्र सही अब देखना - उम्मीद रहते हैं -
मैं अपने परीक्षाएँ मिलेगा शीघ्र ही के रूप में अच्छी तरह से.
>> इस प्रकार के रूप में आज के लिए हमारा एजेंडा है.
सबसे पहले, हम कुछ खत्म हो जाने के लिए जा रहे हैं CS50 आप के लिए प्रदान करता है कि संसाधनों.
हम अगले प्रश्नोत्तरी 0 पर जाने के लिए जा रहे हैं, और मैं किसी भी सवाल का किसी को जवाब देंगे
विशेष समस्या के बारे में है.
और फिर, हम पर जा रही हो जाएगा फाइल मैं / हे और समस्या 5 सेट.
वे पिछले दो विषयों ले जाएगा खंड के थोक आज.
>> मैं एक के रूप में हर सप्ताह इस सूची लगाई आप सभी के लिए है, लेकिन मूल अनुस्मारक
अनुभाग, हम केवल 90 मिनट है - हम सब कुछ कवर करने में सक्षम नहीं हैं कि मैं
आप लोगों के लिए कवर करने के लिए प्यार होता.
लेकिन हम के लिए संसाधनों का एक टन है कर आप जानते हैं के रूप में आप पर आकर्षित करने के लिए
के माध्यम से सामग्री और काम आपकी समस्या खेलें.
>> मैं ऑनलाइन एक पाठ है कि एक अनुस्मारक आप अगर बाहर भरने के लिए आप के लिए स्थापित बॉक्स,
मेरे लिए कोई भी प्रतिक्रिया है, सकारात्मक और दोनों
खंड के बारे में, रचनात्मक.
उस URL सही यहाँ नीचे स्थित है.
आप किसी भी है, तो एक क्षण ले कृपया प्रतिक्रिया, चाहे अनुभाग के दौरान,
या के बाद, या के बाद आप वीडियो देखने के ऑनलाइन, मुझे अपनी प्रतिक्रिया देते हैं.
मैं वास्तव में इसके बारे में किसी भी और सभी की सराहना करते हैं.
>> इसलिए मैं छोटे बातचीत कर रहा है मेरी के बहुत से
हफ्ते भर में छात्र - मैं हाथ के रूप में वापस परीक्षाएँ, के बारे में बात
बेशक, आप कैसे कर रहे हैं देख.
और एक विषय पर ऊपर आ गया है और से अधिक के बारे में बात करने में - में
विशेष -
समस्या खेलें.
और मुझे लगता है कि विषय समझाया है सही अब बोर्ड पर.
>> मूलतः, वहाँ एक अंतर है है कि कुछ में मोड़ के बीच
सही ढंग से और कुछ किया कि अच्छी तरह से किया जाता है.
अधिकांश लोगों को शानदार कर दिया गया है शुद्धता के मामले में -
सभी psets पर 5 या 4 की.
अधिकांश लोगों को हो रही है उन समय के सभी.
>> हालांकि, सिर्फ इसलिए कि तुमने किया है कुछ अधिकार आपको है इसका मतलब यह नहीं है
के रूप में सुंदर ढंग से कुछ किया, या कुशलता, या के रूप में सफाई से आप के रूप में
यह कर सकते थे.
और क्या है कि डिजाइन है -
और एक डिग्री कम है, शैली के लिए -
कुल्हाड़ियों के लिए कर रहे हैं.
इसलिए मैं आप सभी को प्रेरित कर रहा है, और अन्य TFS हूँ न केवल बारी करने के लिए, तुम लोगों को प्रेरित कर रहे हैं
सही हैं, लेकिन बारी है कि बातों में अच्छी तरह से कोडित रहे हैं कि बातों में.
>> छोरों के लिए अनावश्यक नहीं कर रही है, चर अगर recalculating नहीं
आप की जरूरत नहीं है.
उदाहरण के लिए, सेट पीठ की समस्या को देख 4, पर ईंटों रखकर जब
स्क्रीन, हर पंक्ति - एक में हर ईंट भी पंक्ति में एक ही y-निर्देशांक है -
एक ही ऊंचाई समन्वय.
>> Y-समन्वय स्थापित करने की जरूरत नहीं थी तो यह है कि इंटीरियर के अंदर की गणना की जा
आप की संभावना का इस्तेमाल किया है कि पाश के लिए नेस्ट स्क्रीन पर उन ईंटों डाल दिया.
यह केवल हर गणना की जरूरत है बार जब आप एक पंक्ति बंद है, या
एक पंक्ति नीचे चले गए.
10 ईंटों एक में इसलिए यदि वहाँ कहना पंक्ति, प्रत्येक ईंट एक ही हो सकता है
Y-निर्देशांक, और y-निर्देशांक कि बस की गणना की जा सकती है
उन सभी के लिए एक बार.
>> यह 10 की गणना करने की आवश्यकता नहीं है बार, और न ही करता है कि गणना की जरूरत है
वास्तविक में ऐसा करने के लिए समारोह कॉल -
नई gracked समारोह कॉल.
तो उस के लिए थोड़ा भ्रमित था अगर यदि आप अधिक सामान्य रूप से, चीजें हैं जो
हर बार होने की जरूरत नहीं है तुम नहीं होना चाहिए एक के लिए पाश के माध्यम से जाना
के लिए लूप के अंदर डाल चाहिए, और नहीं तुम जाओ हर समय होता है
के लिए लूप के माध्यम से.
>> हमने देखा कि एक और अच्छी डिजाइन उदाहरण 15 के लिए 3 सप्ताह में, आप रख सकता है
शून्य का ट्रैक.
तो तुम, तुम बोर्ड को प्रारंभ जब बचा - एक वैश्विक चर में, शायद -
एक्स और शून्य से y-निर्देशांक.
और फिर जब भी आप -
अपनी चाल समारोह में, जब भी आप कर एक सफल कदम, आप अद्यतन
शून्य का स्थान.
>> ऐसा करने के लिए होने से बचाने के लिए होगा के माध्यम से देखने के लिए loops के लिए नेस्ट
अपनी चाल समारोह में हर बार बोर्ड और शून्य पाते हैं, या टाइल खोजने,
और फिर इसके आगे क्या जांच ले.
इसके बजाय, आप का स्थान है शून्य, आप बस, नीचे, ऊपर देख सकते हैं
और इसके बारे में छोड़ दिया और सही करने के लिए, लगता है आप के लिए देख रहे थे टाइल.
>> इसलिए हम कर रहे हैं कार्यक्रमों के मामले में लेखन, वे काफी बड़े कभी नहीं रहे
कि इन डिजाइन फैसले के कुछ वास्तव में बाधा जा रहे हैं अपने
कार्यक्रम, या, इसे और अधिक धीरे धीरे रन बनाने या शायद यह भी स्मृति से बाहर चला.
लेकिन हम अभी भी तुम लोगों को प्रेरित कर रहे हैं लिखने के रूप में सुरुचिपूर्ण और
संभव के रूप में कुशल कोड.
>> तो अगर आप ऐसा करेंगे बातें लिख अंत तक एक काफी बड़ा है कि
गुंजाइश है, वे अच्छे से लिखा जाएगा सही होने के अलावा डिजाइन.
तो तुम में से एक नंबर कि बाहर लाया.
यही कारण है कि हम देख रहे हैं कुछ है - हम जारी रखने के लिए जा रहे हैं कुछ
आप पर लोग धक्का.
>> क्या तुमने कभी बारे में कोई प्रश्न हैं अपने कार्यक्रम के डिजाइन, स्वतंत्र महसूस
मेरे लिए बाहर तक पहुँचने, और मैं खुश हूँ करने के लिए आप के साथ अपने कार्यक्रम के माध्यम से चलना,
और डिजाइन के कुछ बाहर बिंदु आपको बनाया है, और तुम कुछ दे निर्णयों
बनाने के लिए सुझाव भी बेहतर डिजाइन निर्णय.
>> तो हम पर स्थानांतरित करने के लिए जा रहे हैं प्रश्नोत्तरी 0 के बारे में बात करने के लिए.
हम ऐसा करने से पहले, किसी को भी करता है के बारे में किसी भी सवाल है क्या
मैं अब तक कवर किया है?
>> [Rustling शोर]
>> जेसन Hirschhorn: सात सेकंड.
ठीक है.
चलो एक बिट के लिए प्रश्नोत्तरी 0 के बारे में बात करते हैं.
आप में से अधिकांश अपनी प्रश्नोत्तरी 0 की पीठ है.
तुम नहीं, उम्मीद करते हैं आप इसे थोड़ा याद है.
लेकिन आप तो प्रश्नोत्तरी 0, तुम ले लिया है भी में ऑनलाइन पीडीएफ के लिए उपयोग किया
नमूना समाधान.
>> किसी के सामने कोई प्रश्न है हम के बारे में हफ्ते की सामग्री में कूदने
प्रश्नोत्तरी 0 पर एक विशेष समस्या -
क्यों का जवाब है कि यह क्या है?
किसी को भी कुछ के बारे में उलझन में है?
आप सही समस्या है, लेकिन फिर भी अगर बस मुझे यह एक बिट व्याख्या करना चाहते हैं
अधिक, मैं अब ऐसा करने के लिए खुश हूँ.
>> तो मैं तुम लोगों से कहा है कि कुछ के साथ तैयार आओ
प्रश्नोत्तरी 0 के बारे में विचार.
तो जो हमें प्राप्त करना चाहते हैं एक सवाल के साथ या शुरू
प्रश्नोत्तरी 0 के बारे में टिप्पणी है?
>> पेपर [rustling]
>> जेसन Hirschhorn: हर कोई पूरी तरह से किया था.
तो मुझे पता है [हंसते हुए]
कुछ सवाल वहाँ के लिए है प्रश्नोत्तरी 0 के बारे में.
ठीक है.
हां.
Ompica.
>> OMPICA: संख्या 10.
>> जेसन Hirschhorn: संख्या 10.
जो एक संख्या 10 थी?
>> OMPICA: -
>> जेसन Hirschhorn: मैं नहीं -
>> OMPICA: शामिल हैं -
>> जेसन Hirschhorn: संख्या 10 आठ था मैं - मैं करने के लिए आठ लिख?
>> OMPICA: हाँ.
>> जेसन Hirschhorn: ठीक है.
तो एक और सवाल आप हो सकता था मैं पूर्वद्रष्टा हूँ था पूछा?
इसका जवाब हां में है.
प्रश्नोत्तरी पहले भाग में, मैंने पूछा तुम लोग स्टर्लिंग दोनों कोड के लिए और
आठ मैं करने के लिए.
उन दोनों को क्या हुआ प्रश्नोत्तरी पर दिखाई देते हैं.
तो उम्मीद है, आप भुगतान किया उस पर ध्यान.
>> तुम था, तो आपके पास होगा शायद उन दो पर अच्छी तरह से किया.
लेकिन आठ मैं करने के लिए, हमने किया नहीं वास्तव में कोड यह कक्षा में, लेकिन यह फिर से किया गया था,
प्रश्नोत्तरी पर पूछा.
इसलिए लेने के लिए चीजों की एक जोड़ी मैं करने के लिए आठ कोडिंग जब ध्यान दें.
पहली बात, प्रश्न प्रति था, आप जांच की जरूरत है कि यदि स्ट्रिंग
अशक्त करने के लिए बराबर था.
>> कुछ लोगों पर बाद में जांच करने की कोशिश कार्यक्रम में अगर ब्रैकेट मैं था -
कि इतने में एक विशिष्ट चरित्र स्ट्रिंग - बातिल के बराबर था.
लेकिन वह अशक्त अनिवार्य है, याद है - यह सोचने के लिए अच्छा है
एक शून्य सूचक के रूप में अशक्त - शून्य करने के लिए एक सूचक -
स्मृति में किसी जगह जहां आप का उपयोग कभी नहीं हो सकता.
>> तो अगर तुम्हें कुछ हो, अशक्त करने के लिए बराबर है यह initialized नहीं किया गया है कि पता है,
या वहाँ कुछ भी नहीं है.
तो चलो, एक चार सितारा s है ब्रैकेट मैं एक चार है.
तो यह, अशक्त करने की तुलना करने के लिए समझ में आता है लेकिन नहीं है ब्रैकेट मैं अशक्त करने के लिए.
लेकिन फिर - इसलिए कि पहली बात थी तुम क्या करने वाले थे कि -
सुनिश्चित करें कि करने के लिए जाँच आप वास्तव में एक वास्तविक स्ट्रिंग मिला.
>> इसके बाद, आप के माध्यम से जाना चाहता था स्ट्रिंग में प्रत्येक चरित्र.
और इसलिए है कि एक एस ब्रैकेट की तरह होगा मैं, उदाहरण के लिए, मैं अपने iterator है.
और उस चरित्र ले, और अपने वास्तविक मूल्य मिलता है.
आप इसे एक चार के रूप में जमा है, लेकिन शून्य के लिए ASCII मान -
एक चरित्र के रूप में शून्य -
वास्तव में पूर्णांक शून्य नहीं है.
यह आप कर सकते हैं कि कुछ अन्य नंबर ASCII तालिका में ऊपर देखो.
>> तो एक तरह से उस के लिए सही करने के लिए - के लिए सही करने के लिए शायद सबसे अच्छा तरीका
कि - यह से घटाना है चरित्र मूल्य -
एक चरित्र के रूप में शून्य.
तो शून्य ही बोली, शून्य, एक अन्य एकल बोली.
यही कारण है कि आप जो कुछ भी संख्या ले जाएगा एक चार के रूप में, और यह करने के लिए बराबर मिल
एक वास्तविक पूर्णांक के रूप में संख्या.
>> और उस दृष्टिकोण के समान है बहुत से लोगों में ले लिया
समस्या सीज़र के साथ, 2 सेट और Viginere -
उन सिफर, जब आप उन्हें घूर्णन कर रहे थे.
आप से संख्या के रूप में यह है तो बाद शून्य से नौ, तब - के आधार पर
यह परम संख्या में चला जाता है, जहां - आप यह गुणा करने की आवश्यकता
10 की एक शक्ति के द्वारा.
>> कुछ लोगों को वापस से ले जाया गया सामने, और व्यक्तिगत गुणा
10 की एक शक्ति के द्वारा संख्या.
कुछ लोगों से स्थानांतरित वापस करने के लिए सामने -
और इसलिए उच्चतम ले लिया पहली संख्या के आदेश -
और एक में उन बचा होगा वैश्विक काउंटर चर.
और फिर के माध्यम से हर बार पाश, गुणा कि वैश्विक विशाल
बनाने के लिए, 10 से चर का मुकाबला अगले चार के लिए अंतरिक्ष.
>> तो यह है कि बिना थोड़ा भ्रमित था मुझे बोर्ड पर यह लिख.
लेकिन नमूना समाधान आप के लिए उपलब्ध है.
लेकिन उन बड़ी बातें कर रहे थे हम देख रहे थे.
यह भी सुनिश्चित करें कि प्रत्येक बनाने के लिए एक चेक व्यक्तिगत चरित्र एक वास्तव में था
शून्य और नौ, और नहीं के बीच चरित्र एक एक जैसे कुछ अन्य चरित्र,,
उदाहरण के लिए.
>> उन हम देख रहे थे बातें कर रहे थे के लिए कि प्रश्न में.
कि आपके सवाल का जवाब है?
>> OMPICA: हाँ.
>> जेसन Hirschhorn: ठीक है.
किसी भी अन्य प्रश्न हैं प्रश्नोत्तरी 0 के बारे में?
क्या संकलन के बारे में?
हर कोई सही संकलन?
नहीं.
एक थे -
[हंसते हुए]
के बारे में किसी भी सवाल संकलन प्रक्रिया?
वाह.
>> पेपर [rustling]
>> जेसन Hirschhorn: हाँ.
माइकल.
>> माइकल: - यादृच्छिक संख्या 7 है?
>> जेसन Hirschhorn: संख्या 7.
7 नंबर एक यादृच्छिक पूर्णांक मिलता था.
बहुत बढ़िया.
तो तुम एक पूर्णांक एक दिया और एक कर रहे हैं पूर्णांक ख, और आप एक यादृच्छिक चाहते हैं
ए और बी के बीच पूर्णांक.
हम वास्तव में यह एक पर लिख सकते हैं बोर्ड, क्योंकि यह एक
कोड की एक पंक्ति थी -
यह करने के लिए एक ही रास्ता है.
>> तो हम एक के रूप में drand दिया हो समारोह हम इस्तेमाल कर सकते हैं.
और क्या drand करता है -
यह वरीयता प्राप्त किया गया है संभालने -
क्या लौटने drand करता है?
>> माइकल: 0.0 और 1.0 के बीच एक नाव.
>> जेसन Hirschhorn: एक नंबर - हाँ.
0 और 1 के बीच एक नंबर.
और इसलिए हम बी और एक है.
और फिर हम अपने यादृच्छिक संख्या है 0 और 1 के बीच drand ने हमें दिया.
कुछ लोगों को बी डालने की कोशिश की, या बी माइनस उन के अंदर एक, या कुछ और
कोष्ठक.
यही कारण है कि वे कर रहे हैं कि इसका मतलब यह होगा इस समारोह के लिए तर्क.
>> drand कोई बहस नहीं ले करता है - getString की तरह
किसी भी तर्क से नहीं ले.
तो यह करीब है, बस खुले कोष्ठक है paren - और कि, ही, है
समारोह कॉल.
और कहा कि तुम एक नंबर देता है 0 के बीच और 1.
बेशक, हम एक पूरी श्रृंखला है संख्या के अंदर हो सकता है कि
>> बी 10 है और एक 5 है, तो हम वास्तव में, कहो 5 की एक सीमा के साथ एक नंबर चाहिए.
तो हम क्या करने की जरूरत अगले बात है श्रृंखला बी शून्य से एक के द्वारा इस गुणा.
इसलिए कि गुणा है संभालने.
और कहा कि हमें एक नंबर देता हूँ एक दिया सीमा के भीतर.
और उस विशिष्ट रेंज से किया जा रहा बी शून्य से एक के बीच का अंतर.
>> और अंत में, कि केवल से दे देंगे - बी शून्य से एक के बीच सीमा का कहना है
5, कि हमें एक देता हूँ है 0-5 संख्या.
एक तथ्य यह है कि 5 में है लेकिन, अगर हम को बढ़ावा देने की जरूरत यह है, जहां तक ​​इस श्रृंखला ऊपर
वास्तव में एक जोड़कर, होना चाहिए.
इसलिए कि तर्क सही हो जाता है.
और फिर, तुम होगा एक और सवाल?
>> माइकल: नहीं
मैं सिर्फ सही अब सच में मूक लग रहा है.
[हंसते हुए]
>> जेसन Hirschhorn: नहीं
सच में मूक महसूस न करें.
लोगों के एक नंबर के लिए संघर्ष इस सवाल के साथ.
और फिर, अन्य प्रश्न है, drand, आप ने कहा आप एक नाव देता है -
एक नाव देता है.
लेकिन इस समारोह वास्तव में पूछा एक पूर्णांक वापस करने के लिए के लिए.
>> आप स्पष्ट रूप से इस कास्ट करने की जरूरत नहीं है एक पूर्णांक के लिए, इन क्योंकि
आपरेशन सब एक के रूप में इलाज होगा नाव - एक चल बिन्दु संख्या के रूप में.
इस वसीयत की तरह - यहां तक ​​कि अगर यह एक पूर्णांक, यह इच्छा है
सही ढंग से गुणा किया.
सभी गुणन काम करेंगे.
आप यहाँ यह कास्ट करने की जरूरत नहीं है.
वास्तव में, आप यह नहीं डाली चाहिए.
>> होता है कि -
आप एक नंबर देना होगा अगर कि 0 और 1 के बीच है -
एक यादृच्छिक संख्या, एक चल बिन्दु -
तो यह या तो ऐसा है, तो केवल 0 या 1 हो जाएगा आपको लगता है कि परिशुद्धता के सभी खो देंगे.
लेकिन अंत में, जब तुम वापस, यह स्वतः ही हो जाता है
एक पूर्णांक के रूप में वापस भेज दिया.
तो तुम क्या करने की जरूरत नहीं है कि अपने आप कास्टिंग.
>> तो इस सवाल का जवाब था उस सवाल, संख्या 7.
प्रश्नोत्तरी 0 पर कोई अन्य प्रश्न?
हाँ, एनी.
>> एनी: हम पुनरावर्ती का उपयोग करते हैं -
जब हम चलने का छोरों प्रयोग करते हैं?
>> जेसन Hirschhorn: जब आप प्रयोग करते हैं पुनरावर्ती - इतना अधिक आम तौर पर,
प्रत्यावर्तन बनाम के पेशेवरों और विपक्ष एक चलने का दृष्टिकोण.
किसी को भी एक समर्थक या एक चोर की पेशकश कर सकते हैं?
कृपया?
किसी को भी नहीं कर सकते हैं.
कौन एक समर्थक या एक चोर की पेशकश कर सकते हैं?
>> पेपर [rustling]
>> छात्र 1: पुनरावर्ती कम है कोडिंग - कम टाइपिंग?
>> जेसन Hirschhorn: तो आम तौर पर, प्रत्यावर्तन विशेष रूप से, एक समारोह -
या मर्ज की तरह एक एल्गोरिथ्म तरह - जो उधार देता है
एक पुनरावर्ती दृष्टिकोण करने के लिए -
और अधिक सरल हो सकता है बारी बारी से कोड करने के लिए.
और बस अधिक मतलब बारी बारी से यह करने के लिए.
इसलिए कि प्रत्यावर्तन के लिए एक समर्थक होगा.
अन्य?
हाँ?
>> छात्र 2: प्रत्यावर्तन के लिए कांग्रेस -
इसे और अधिक स्मृति का उपयोग करता है.
>> जेसन Hirschhorn: तो बिल्कुल सही.
एक पुनरावर्ती समारोह जोड़कर रखना होगा ढेर ढेर फ्रेम करने के लिए.
आप में से बहुत पर काम कर रहे हैं तो अगर संख्या, और यह कॉल करने के लिए है
एक बहुत समारोह, तो आप निश्चित रूप से होगा जबकि, अधिक स्मृति ले
चलने का एक दृष्टिकोण केवल एक ही रखा जाएगा , ढेर पर फ्रेम हो चुकी है क्योंकि
यह सब एक समारोह के भीतर होता है.
>> किसी भी अन्य पेशेवरों और विपक्ष?
हाँ.
>> छात्र 3: प्रत्यावर्तन के लिए पेशेवरों.
आप में निर्धारित करने के लिए नहीं है अग्रिम कितनी बार
कोड दोहराया जा सकता था.
आप का एक पूर्व निर्धारित संख्या में हो सकता है आप तो, पुनरावृति करना है कि टाइम्स
प्रत्यावर्तन, बेहतर है क्योंकि यह नतीजा है कि लेता है.
>> जेसन Hirschhorn: मैं सच है कि लगता है.
लेकिन मैं दोनों ही मामलों में लगता है आप कभी नहीं होगा -
आप शायद कुछ मिल जाएगा उपयोगकर्ता से इनपुट.
या इस समारोह में कुछ इनपुट होगा कि निर्धारित करेगा कि कितनी बार यह
चलाना चाहिए.
तो आम तौर पर, आप हार्ड कोड नहीं होगा - यहां तक ​​कि चलने का एक दृष्टिकोण में - कैसे
कई बार लगता है कि पाश चलाया जाना चाहिए.
>> तुम थे एक और भी था एनी, के बारे में सोच?
ठीक है.
तो उन शायद दो हैं -
सबसे बड़ा समर्थक है और सबसे बड़ी बनाम एक पुनरावर्ती को चुनाव
एक चलने का दृष्टिकोण.
ठीक है.
प्रश्नोत्तरी 0 पर कुछ और?
>> चलो पर चलते हैं.
फ़ाइल मैं / ओ एक अद्भुत कम नहीं है इस सप्ताह फ़ाइल पर मैं / हे कि उम्मीद है कि
आप कई देखा है बार, और प्रशंसा की.
काम का एक बहुत है कि में चला गया, और मैं यह insanely मददगार है सुना.
मैं भी इस स्लाइड पर लिंक शामिल मामले में आप नहीं पड़ा है एक
यह 10 बार देखने का मौका.
>> तो, हम संक्षेप में ऊपर जाने के लिए जा रहे हैं खोलने और काम करने के लिए बड़े कदम
फाइलों के साथ, और फिर हम करने जा रहे हैं पहले एक कोडन समस्या में डुबकी
समस्या का परीक्षण.
तो फिर, मैं इस पर डाल करने के लिए जा रहा हूँ स्क्रीन, लेकिन मैं के लिए बात करने के लिए जा रहा हूँ
हम क्या कर रहे हैं के बारे में सिर्फ एक मिनट फ़ाइल के साथ यहाँ क्या कर I/O--
इसका क्या मतलब है?
>> यही कारण है कि हम बना सकते हैं इसका मतलब है कि हमारी कार्यक्रम, और फिर हमारे कार्यक्रम है
बाहर निकलें, और पर कोई प्रभाव नहीं बना हमारे कार्यक्रम के लिए बाहर की दुनिया.
लेकिन हम फाइलों के साथ काम शुरू करने के समय - दोनों में उन्हें पढ़ने और बनाने
उन्हें - हम पर कुछ प्रभाव हो सकता है हमारे कार्यक्रम के लिए बाहर की दुनिया.
>> वैसे ही जैसे माइक्रोसॉफ्ट वर्ड में सक्षम नहीं था फिर, किसी भी पद दस्तावेजों बनाने के लिए
माइक्रोसॉफ्ट वर्ड, आपके के सभी पद छोड़ने एक बार काम चला गया होगा, और यह होगा
वास्तव में बेकार हो.
हम अंततः के लिए सक्षम होना चाहता हूँ प्रभावित कर सकते हैं कि प्रोग्राम लिखने
उन्हें चारों ओर दुनिया, दोनों में लेने के द्वारा फ़ाइलों के संदर्भ में और - जटिल आदानों
फ़ाइलों के माध्यम से, और भी दिलचस्प बनाने और सम्मोहक Outputs -
फ़ाइलों के विभिन्न प्रकार के संदर्भ में.
>> हम शुरू कर रहे हैं तो यही कारण है कि है फाइलों के साथ काम करने के लिए सीखने.
अधिक विशेष रूप से, क्या हम इस प्रकार है करते हैं.
यह बहुत सरल है.
वहाँ कदम का केवल एक जोड़े हैं, और वे इस कोड को यहां सूचीबद्ध हैं.
इसलिए हम के माध्यम से जाने के लिए जा रहे हैं रेखा ने इस कोड लाइन.
>> सबसे पहले, आप पर प्रकाश डाला देखते हैं -
आप एक फ़ाइल के साथ काम कर रहे हैं, जब चाहे फ़ाइल के प्रकार का यह है
आप इसे खोलने की जरूरत है.
और उस fopen के लिए एक फोन के साथ है -
यहीं.
आप फ़ाइल के नाम शामिल हैं.
फ़ाइल, अपनी निर्देशिका में नहीं है या फ़ोल्डर जहां इस कार्यक्रम
जीवन है, तो आप भी शामिल करने की आवश्यकता उस फ़ाइल है, जहां के लिए एक रास्ता.
>> हम कल्पना करने के लिए जा रहे हैं कि इस "text.txt" नामक फ़ाइल -
एक साधारण पाठ दस्तावेज़ - में है इस कार्यक्रम के रूप में एक ही फ़ोल्डर है.
तो उस में रखने के लिए एक और बात है मन - कि आप एक फ़ाइल को खोलने के लिए चाहते हैं
कहीं और, आप वास्तव में जरूरत इसके स्थान शामिल करने के लिए.
>> दूसरे, आप के लिए एक तर्क पारित कर सकते हैं fopen, और है कि आप क्या करना चाहते है
फ़ाइल के साथ.
तीन मुख्य तर्क है कि कर रहे हैं आप fopen को पारित करने के लिए जा रहे हैं.
कौन मुझे उन तीन दे सकता है?
कौन मुझे उनमें से एक को दे सकता है?
हां.
>> छात्र 4: फ़ाइल नाम?
>> जेसन Hirschhorn: क्षमा करें.
आप पास कर सकते हैं तीन मुख्य तर्क दूसरा तर्क fopen के रूप में.
आप ठीक कह रहे हैं - फाइलों के नाम पहला तर्क है.
लेकिन fopen के लिए दूसरा तर्क हैं आम तौर पर तीन तार, और - हाँ.
Aleja.
>> Aleja: संलग्न के लिए एक.
>> जेसन Hirschhorn: एक, अगर तुम चाहते हो पहले से मौजूद है कि एक फ़ाइल को संलग्न.
>> छात्र 5: पढ़ने के लिए आर.
>> जेसन Hirschhorn: A, आप अगर एक फ़ाइल से पढ़ने के लिए चाहते हैं.
>> छात्र 6: लिखने के लिए डब्ल्यू.
>> जेसन Hirschhorn: और, w अगर आप एक फाइल को लिखने के लिए चाहते हैं.
तो इस मामले में, हम लिख रहे हैं फाइल करने के लिए, तो हम w है.
आप इसे खोलने, आप भी बचाना है कहीं फाइल, और उस के साथ है
के बाएं हाथ की ओर करने के लिए कोड असाइनमेंट ऑपरेटर -
मैं एक फ़ाइल के लिए एक संकेत पैदा कर रहा हूँ इस मामले में, फ़ाइल में, कहा जाता है.
>> हमें चिंता करने नहीं जा रहे हैं क्या इस सब टोपियां फ़ाइल बात है.
इतना ही कहना है, यह एक लंबे समय है शून्य और लोगों की धारा.
और कहा कि हम करने जा रहे हैं कि कैसे है यह काम करते हैं और यह समझते हैं.
>> हम क्या करने की जरूरत अगले बात है - और यह अविश्वसनीय रूप से महत्वपूर्ण है -
आप एक फ़ाइल को खोलने के लिए जब भी -
वास्तव में, आप malloc कॉल जब भी, के लिए उदाहरण के लिए, और कुछ स्मृति पाने के लिए और कोशिश
और आप हमेशा एक सूचक में इसे बचाने के लिए सुनिश्चित करें कि करने के लिए जाँच करना चाहते हैं
समारोह अशक्त वापस नहीं किया.
>> तो इस मामले में, हम बनाने के लिए जाँच कर रहे हैं हम वास्तव में खोला यह सुनिश्चित करें कि
सही ढंग से फाइल, और वहाँ था हमारे कार्यक्रम में कोई त्रुटि.
इसके बाद, एक बार हम यह सुनिश्चित करने के लिए जाँच की है हम हम कर सकते हैं, काम कर रहे एक फ़ाइल है कि
, लिखने के लिए, या से पढ़ या फ़ाइल को संलग्न.
इस मामले में, मैं बस मुद्रण कर रहा हूँ इस फाइल को एक पंक्ति.
>> मैं कैसे पता है?
ठीक है, मैं इस समारोह का उपयोग कर रहा हूँ fprintf कहा जाता है.
आप का उपयोग किया जाएगा कार्यों के सभी , के लिए लिख या से, या पढ़ते समय
फ़ाइलें जोड़ तोड़ के समान हो जाएगा तुम से पहले देखा है, लेकिन कार्यों
पत्र एफ के साथ शुरू, फाइल के लिए खड़ी है.
और fprintf, हमारे सामान्य प्रिंट के विपरीत अनुप्रयोग, एक अतिरिक्त तर्क लेता है,
और उस फ़ाइल है जहां आप इस पंक्ति मुद्रित करना चाहते हैं.
>> मैं करने के लिए कुछ भी नहीं है ohai का अधिकार.
मैं तीसरे की जरूरत नहीं है printf के लिए तर्क -
या दूसरा तर्क printf के लिए, तीसरा तर्क fprintf के लिए, क्योंकि मैं
यहां किसी भी प्लेसहोल्डर्स नहीं है.
मैं किसी भी चर सहित नहीं कर रहा हूँ.
लेकिन फिर, fprintf और इन फ़ाइल के सभी फाइलों के साथ काम करते हैं कि कार्यों
आम तौर पर फाइल की जरूरत जा रहे हैं जिस पर वे काम कर रहे हैं.
>> अंत में, पिछले महत्वपूर्ण बात करने के लिए बस पसंद नहीं है, फाइल बंद करने के लिए है
साथ - हम कुछ malloc जब भी, हम हम ऐसा न हो, कुछ को मुक्त करना चाहते हैं
एक स्मृति रिसाव है - हम चाहते हैं हमारे फाइल बंद करने के लिए.
इस कार्यक्रम के समापन के बिना बाहर निकल गया तो फ़ाइल, बाधाओं कुछ भी नहीं जाना होगा रहे हैं
गलत, विशेष रूप से अगर यह एक छोटी सी फाइल था.
>> लेकिन यह निश्चित रूप से अच्छा कोडन शैली है और हमेशा अपनी फाइल बंद करने के लिए अभ्यास
आप यह प्रयोग पूरा हो जाए तो.
तो उस फ़ाइल की मूल बातें मैं / ओ है तुम्हें शायद पहले कि देखा, या किया है
कि शानदार संक्षेप में इसे देखा.
किसी को भी करने से पहले, किसी भी सवाल है हम कुछ अभ्यास कोडिंग में जाने
फाइल के बारे में समस्याओं, मैं / हे या कदम मैं बस खत्म हो गया था?
>> [टाइपिंग ध्वनियों]
>> जेसन Hirschhorn: क्या आप एक सवाल, AVI है?
>> AVI: नहीं
>> जेसन Hirschhorn: ठीक है.
मैं एक और प्रतीक्षा करने के लिए जा रहा हूँ सात सेकंड.
[हंसते हुए]
यह एक बहुत अच्छा संकेत है.
तुम लोग पसंद नहीं करते सवाल पूछ रहे हैं.
यह ठीक है.
ठीक है.
इसलिए हमारा पहला अभ्यास समस्या हम कर रहे हैं, है समारोह की नकल करने के लिए जा रहा
एक कमांड लाइन उपकरण है कि आप शायद कॉपी - पहले प्रयोग किया -
नकल उपकरण.
आप सी.पी. टाइप करें और फिर इसे पारित तो दो अपने टर्मिनल में तर्क, आप कर सकते हैं
एक फाइल कॉपी.
और कहा कि हम जा रहे हैं अब सही लिखने के लिए.
>> तो फिर, इस स्लाइड के बंद को पढ़ने, मैं हूँ आपको लगता है कि एक प्रोग्राम लिखने के लिए
दो और दो कमांड लाइन ही तर्क -
एक स्रोत फ़ाइल और गंतव्य फ़ाइल -
और प्रतियां स्रोत की सामग्री गंतव्य फ़ाइल के लिए फ़ाइल
एक समय में एक बाइट.
तो उस के लिए पूछने के लिए एक बहुत कुछ है.
>> फिर, यह एक अच्छा तरीका है सी कोड के लिए सीधे जाओ, लेकिन नहीं
कदम के एक जोड़े में टूट.
सबसे पहले, तर्क के बारे में सोचने - बिल्कुल मैं क्या करने के लिए कह रहा हूँ -
और सभी को समझ इस समस्या के लिए कदम उठाए.
नहीं सी में, बस कुछ pseudocode में, या यहां तक ​​कि एक मानसिक मॉडल
क्या हो रहा है.
>> इसके बाद, आप pseudocode नीचे है एक बार, यह पता लगाने कैसे pseudocode
उपकरण और हम है कि चीजों पर नक्शे सी. में उपयोग करने के लिए सीखा
>> और अंत में, एक बार आप सभी कि है एक साथ, आप समस्या कोड कर सकते हैं.
करने के लिए 5 से 10 मिनट ले लो इस समस्या पर काम करते हैं.
मैं निर्देश डाल देता हूँ वापस एक दूसरे में.
और फिर हम पर जाने के लिए जा रहे हैं pseudocode, और कोड
यह एक समूह के रूप में रहते हैं.
>> आप कर रहे हैं, जबकि आप कोई प्रश्न हैं इस पर काम कर रहे बढ़ाने के लिए स्वतंत्र महसूस
अपने हाथ, और मैं आ जाएगा चारों ओर और उन्हें जवाब.
>> छात्र 7: मैं कड़ी चोट कर सकते कागज के एक टुकड़े?
>> जेसन Hirschhorn: क्या चल रहा है?
>> [टाइपिंग ध्वनियों]
>> जेसन Hirschhorn: ठीक है.
की पहली pseudocode पर चलते हैं, और तो मैं आपको एक जोड़े को और अधिक देता हूँ
मिनट कोडिंग खत्म करने के लिए.
>> कौन मुझ पर से शुरू करना चाहते हैं की पहली पंक्ति के साथ
इस समारोह के लिए pseudocode?
>> छात्र 8: सुनिश्चित करने के लिए जाँच करें आप दो फ़ाइलों को दिए गए थे.
>> जेसन Hirschhorn: ठीक है.
और हम नहीं कर रहे हैं?
>> छात्र 8: मैं 0 वापस कर देगा.
>> जेसन Hirschhorn: हम 0 वापसी करना चाहिए?
>> छात्र 8: एक वापसी -
blanking.
माफ़ कीजिए.
>> जेसन Hirschhorn: हाँ.
शायद नहीं 0.
0 सब कुछ अच्छा था क्योंकि इसका मतलब है.
ठीक है.
तो यह है कि पहली पंक्ति है pseudocode की.
कौन pseudocode की दूसरी पंक्ति है?
>> छात्र 9: फ़ाइलें दोनों खुला?
>> जेसन Hirschhorn: दोनों फ़ाइलों को खोलें.
ठीक है?
>> छात्र 10: जांच देखने के लिए फ़ाइल रिक्त है?
>> जेसन Hirschhorn: बनाने की जाँच करें यकीन रिक्त हैं भी नहीं.
एक अलग रूप में -
0 स्लैश -
कि नल है?
>> छात्र 11: नहीं
>> जेसन Hirschhorn: यह रिक्त नहीं है.
यही रिक्त टर्मिनेटर कहा जाता है.
यह वास्तव में केवल एक ही एल के साथ वर्तनी है.
तो उस के खिलाफ कुछ जाँच - कि वास्तव में एक चरित्र है -
तो उस के खिलाफ कुछ है की जाँच देखने के लिए जाँच के रूप में ही नहीं अगर यह
नल के बराबर होती है.
>> और कुछ लोगों को -
उनकी परीक्षाएँ और उनकी समस्या पर सेट - मिल गया है
उलझन में उन में से दो.
लेकिन उन में से दो हैं विभिन्न वास्तव में.
एक एक स्ट्रिंग समाप्त होता है -
एक 0 करने के लिए एक सूचक है.
>> छात्र 12: क्यों आप की जांच नहीं होगी फाइलें रिक्त नहीं हैं सुनिश्चित करें
आप उन्हें खोलने से पहले?
>> जेसन Hirschhorn: तो खुला बचाता है कि फाइल में कुछ.
और तुम यहाँ वापस जाओ -
इसलिए इस लाइन - fopen -
आप एक पते और दुकान दे देंगे अगर यह काम करता फ़ाइल में है कि पता.
यह काम नहीं करता है, तो यह नल की दुकान होगी -
>> छात्र 12: ओह.
ठीक है.
आप समझे.
>> जेसन Hirschhorn: फ़ाइल में.
तो आप नल के लिए जाँच नहीं कर सकते आप उन्हें खोल दिया है पहले.
नल कुछ नहीं किया है सही ढंग से काम करते हैं.
ठीक है.
तो सुनिश्चित करें कि न तो बनाने की जांच?
या कर रहे हैं?
हम क्या सोचते हैं?
हम उस के साथ जाना होगा.
>> छात्र 13: है.
>> जेसन Hirschhorn: है?
न तो?
>> छात्र 13: है.
>> जेसन Hirschhorn: ठीक है.
हम कुछ है लगता है उस पर आम सहमति.
नल है न तो.
ठीक है, pseudocode की अगली पंक्ति.
जो अभी तक मुझे एक लाइन नहीं दिया है?
हम आप के लिए इंतजार करेंगे.
हाँ.
>> छात्र 14: आप पढ़ने के लिए पहली फ़ाइल से?
>> जेसन Hirschhorn: ठीक है.
>> छात्र 14: या हम fscanf उपयोग या कि पहले फाइल की तरह कुछ?
>> जेसन Hirschhorn: तो हम करना चाहते हैं पहली फ़ाइल से पढ़ने और -
यहीं कि डाल दिया.
स्रोत फ़ाइल से पढ़ें.
और फिर, हम के बाद हम क्या करते हैं स्रोत फ़ाइल से पढ़ा है?
कोई और?
>> छात्र 15: लिखें में गंतव्य फ़ाइल?
>> जेसन Hirschhorn: हम करने के लिए लिख गंतव्य फ़ाइल, और -
ठीक है.
हम और क्या याद आ रही है?
मुझे एक नहीं दिया है जो किसी और को अभी तक कोड की लाइन - pseudocode की.
हाँ.
>> छात्र 16: शायद आप हमेशा जाँच कर सकते हैं चाहे के लिए पढ़ने के लिए कुछ है,
अगली पंक्ति की तरह?
अगली पंक्ति की तरह हैं, अगर यह मौजूद है देखते हैं.
>> [इलेक्ट्रॉनिक बीप]
>> जेसन Hirschhorn: उफ़.
वह मेरी journaling सॉफ्टवेयर है.
हाँ?
>> छात्र 16: हाँ.
>> जेसन Hirschhorn: तो दे यह मेरे लिए एक बार.
>> छात्र 16: है कि क्या वहाँ की जाँच करें से अभी भी एक अगली पंक्ति
पढ़ने के लिए स्रोत फ़ाइल.
>> जेसन Hirschhorn: ठीक है.
इसलिए हम लाइनों पढ़ नहीं रहे हैं - यहाँ बाइट्स पढ़ रहे थे -
लेकिन आप सही कर रहे हैं.
हम जब तक पढ़ने और लिखने के लिए चाहते हैं कोई और अधिक बाइट्स कर रहे हैं.
ठीक है.
और हां ये सच इंडेंट होना चाहिए एक सा है, वे वहाँ के तहत कर रहे हैं.
है ना?
हम बैट से बाहर रहे हैं, जब तक हम करने जा रहे हैं स्रोत फ़ाइल से पढ़ने और लिखने
गंतव्य फ़ाइल के लिए.
>> और फिर, पिछले क्या है pseudocode की रेखा?
नहीं दिया कोई है जो मुझे कुछ अभी तक.
>> छात्र 17: फ़ाइलें बंद करें?
>> जेसन Hirschhorn: बिल्कुल.
फ़ाइलें बंद करें.
इसलिए हमारे pseudocode नहीं है.
मैं में pseudocode डाला जा रहा हूँ जीएडिट, और कुछ मिनट में हम
एक साथ इस कोड होगा.
>> ठीक है.
हमें एक समूह के रूप में शुरू हो जाओ.
निशांत, मैं अपने नए फ़ाइल है.
मैं सिर्फ इस खोल दिया है.
शीर्षकहीन दस्तावेज़ 1.
मुझे क्या करना चाहिए पहली बात क्या है?
>> निशांत: पुस्तकालयों को शामिल करें?
>> जेसन Hirschhorn: ठीक है.
क्या पुस्तकालयों?
>> निशांत: stdio.h, stdlib.h, मुझे विश्वास है?
>> जेसन Hirschhorn: ठीक है.
के लिए stdlib क्या है?
>> निशांत: मैं भूल गया था.
>> जेसन Hirschhorn: ठीक है.
तो stdio शामिल हैं.
मैं भी पहले क्या करना चाहिए मैं कोडन शुरू?
>> निशांत: एक शीर्ष लेख लिखें?
>> जेसन Hirschhorn: कैसे यह रंग मैं मिलता है?
>> [INTERPOSING आवाज़ें]
>> निशांत: आप कैसे यह रंग मिलता है?
>> जेसन Hirschhorn: कैसे मैं कोडिंग के रंग?
>> निशांत: मुझे नहीं पता.
ओह.
सहेजें.
>> जेसन Hirschhorn: सहेजें.
हां.
मैं एक. सी के रूप में इसे बचाना चाहिए.
तो cp.c. के रूप में डेस्कटॉप पर सहेजें
मीठा.
और मैं पूर्ण शैली प्राप्त करना चाहते हैं अंक, क्या करना चाहिए मैं
शीर्ष पर शामिल हैं?
>> निशांत: आप अपने नाम, नाम लिख सकता है कार्यक्रम, और उद्देश्य की
साथ ही कार्यक्रम की?
>> जेसन Hirschhorn: अच्छा लग रहा है.
बहुत बढ़िया.
तो आप पूरी तरह से हमें बंद करना शुरू कर दिया है.
# शामिल -
हम भी लिख देता हूँ -
ठीक है.
इसलिए मुझे लगता है मैं सभी जाने के लिए तैयार हूँ लगता है.
कौन मेरे लिए कोड की पहली पंक्ति है - या कोड के पहले लाइनों कि
यह हमारी पहली संतुष्ट करने के लिए ले जाएगा pseudocode में टिप्पणी है?
तुम.
>> छात्र 18: यह INT नहीं होना चाहिए argc, और फिर चार * argv?
>> जेसन Hirschhorn: मुझे लगता है कि आप ठीक कह रहे हैं.
चलो यह मुख्य, खुला paren int को बदलते हैं, INT argc, अल्पविराम, चार * argv?
ऐसे ही?
>> छात्र 18: कोष्ठक.
>> जेसन Hirschhorn: कोष्ठक.
ओपन वर्ग, करीब ब्रैकेट, करीब जनक.
बिल्कुल सही.
अब मैं कमांड लाइन तर्क ले जा सकते हैं.
ठीक है.
हम दो फाइलें दिया हो यह सुनिश्चित करें.
आप के रूप में अच्छी तरह से मुझे लगता है कि दे सकता है.
>> छात्र 18: argc हैं -
इस एक 3 बराबर नहीं है.
>> जेसन Hirschhorn: यदि खुला कोष्ठक 3 argc बराबर नहीं है?
>> छात्र 18: हाँ, तुम वापस 1 या कुछ भी.
>> जेसन Hirschhorn: क्षमा करें.
>> छात्र 18: वापसी 1 या कुछ भी.
>> जेसन Hirschhorn: 1 लौटें.
ठीक है?
ग्रेट.
दोनों फ़ाइलों को खोलें.
कौन मुझे दोनों फ़ाइलों को खोलने में मदद कर सकते हैं?
जो अभी तक मेरे कोड नहीं दिया है?
कर्ट?
>> कर्ट: इतना सब टोपियां एफ मैं एल ई सितारा स्रोत.
>> जेसन Hirschhorn: मैं जा रहा हूँ स्वर बाहर ले जाना.
उन शांत कर रहे हैं.
यह Tumblr की तरह है.
>> छात्र 18: fopen बराबरी -
>> जेसन Hirschhorn: fopen बराबरी?
>> छात्र 18: खुला कोष्ठक, argv, खुला ब्रैकेट.
>> जेसन Hirschhorn: रुको.
माफ़ कीजिए.
ओपन कोष्ठक.
ठीक है.
>> छात्र 18: हाँ.
Argv उप 1.
>> जेसन Hirschhorn: उप 1?
>> छात्र 18: हाँ.
Argv खुला ब्रैकेट 1 -
हां.
और फिर अल्पविराम, और फिर खुला डबल बोली, आर, डबल बोली,
करीब कोष्ठक, अर्धविराम.
>> जेसन Hirschhorn: मीठा.
और क्या एक दूसरे के बारे में क्या?
>> छात्र 18: बहुत समान है, लेकिन बदले एस आर सी के, D-एस टी यह फोन था.
>> जेसन Hirschhorn: ऊ!
मुझे अच्छा लगा.
>> छात्र 18: बस डी एस टी. हाँ.
और फिर,, 2 खुले ब्रैकेट argv.
हाँ.
और फिर डब्ल्यू बजाय आर.
हाँ.
>> जेसन Hirschhorn: महान.
लाइनों के अगले कुछ.
इसके अलावा, किसी को जोड़ने के लिए काम किया है, तो हम किया है कि लाइनों, करने के लिए स्वतंत्र महसूस
साथ ही उन जोड़ने.
यकीन न तो नल है बनाने की जाँच करें.
कौन मुझे मैं जरूरत कोड दे सकते हैं pseudocode की उस रेखा को संतुष्ट?
आर्चर.
>> आर्चर: स्रोत के बराबर होती हैं अशक्त या डीएसटी के बराबर होती है
नल, तो आप वापस आ -
>> जेसन Hirschhorn: क्या?
>> आर्चर: 2 वापसी?
>> जेसन Hirschhorn: 2 लौटें.
इतना खुला कोष्ठक स्रोत के बराबर होती है अगर नल के बराबर होती है, या -
कि thing's जो कुछ - पाइप?
पाइप?
हम पाइप यह फोन करता हूँ.
पाइप, पाइप, डीएसटी के बराबर होती है नल, 2 वापसी.
ठीक है?
हम बैट से बाहर रहे हैं जब तक -
हम की तरह से इस कदम पर छोड़ दिया यहाँ करने के लिए जा रहा करने के लिए pseudocode हिस्सा.
>> लेकिन जब तक हम बैट से बाहर रहे हैं - कि ध्वनि की तरह क्या करता है?
सी संरचना किस प्रकार है -
लेकिन मैं शब्द संरचना का उपयोग नहीं करते, हम प्रयोग शुरू करने जा रहे हैं, क्योंकि
कि अन्य मामलों में -
लेकिन सी उपकरण की तरह है कि ध्वनि करता है?
>> छात्र 19: एक पाश.
>> जेसन Hirschhorn: एक पाश.
एक लूप की तरह लगता है.
तो जो मुझे पहली पंक्ति दे सकते हैं यहीं पाश कोड का?
आप यह भी चुन सकते हैं किस तरह का आप मुझे दे लूप यदि आप चाहते हैं
कोड की इस पंक्ति.
तीन प्रकार के होते हैं.
आप लेने के लिए मिलता है.
मैं उन में से एक सुझाव है.
Avi.
जो एक तुम चाहते हो?
>> AVI के लिए:.
>> जेसन Hirschhorn के लिए:.
>> AVI: मैं शून्य के बराबर Int.
>> जेसन Hirschhorn: ठीक है.
>> AVI: मैं के बारे में यकीन नहीं है यह हिस्सा.
लेकिन मैं आकार से कम है सितारा स्रोत की?
मुझे इस बात का यकीन नहीं है.
>> जेसन Hirschhorn: ठीक है.
>> आप चाहते हैं: AVI एक फाइल का आकार, है ना?
>> जेसन Hirschhorn: तो यह शायद नहीं होगी हमें वास्तविक का आकार दे
बाइट्स में फ़ाइल.
तो हम और क्या कर सकता है?
पाश की एक अन्य प्रकार क्या है?
या हम के लिए लूप के साथ रहना चाहिए?
>> छात्र 20: आप थोड़ी देर के पाश कर सकते हैं?
और फिर, क्या आप करना चाहते हैं you'd है -
हम फ़ाइल के लिए एक चार * है क्योंकि.
हम सिर्फ incrementing रखना तो अगर कि हम नल चरित्र में पता था जब तक
इसका अंत?
या नहीं, फाइलें कैसे काम नहीं करता है?
>> जेसन Hirschhorn: तो हम रख सकते हैं * चार incrementing
हम नल लगता है जब तक -
>> छात्र 20: अनिवार्य रूप से जा रहा रखने चरित्र से चरित्र हम मारा जब तक
फ़ाइल का अंत.
>> जेसन Hirschhorn: हाँ.
तो यह है कि हम क्या करना चाहते है.
हम पढ़ने, चरित्र रखना चाहते हैं चरित्र से, हम करने के लिए जब तक
फ़ाइल का अंत.
>> छात्र 20: हाँ.
खोजें -
अंत या बंद हस्ताक्षर क्या है एक पाठ फाइल के अंत में.
>> जेसन Hirschhorn: ठीक है.
इसलिए हम फ़ाइल का अंत करने के लिए जब - हम कैसे हम पहुँच चुके जानते हो
एक फाइल के अंत?
मैं बुला रहा हूँ तो -
तो चलो वापस कदम चलो.
एक समारोह में क्या है?
यहीं इस लाइन के लिए चलते हैं.
स्रोत फ़ाइल से पढ़ें.
कौन मुझे कोड की लाइन दे सकता है?
>> छात्र 21: fscanf?
>> जेसन Hirschhorn: fscanf.
ठीक है.
क्या मैं पढ़ना चाहते हैं, तो बहुत विशेष रूप से, एक बाइट?
>> छात्र 21: मुझे नहीं पता.
>> जेसन Hirschhorn: ठीक है.
Fscanf से भी सरल - एक क्या है -
मैं एक स्रोत फ़ाइल से पढ़ने के लिए करना चाहते हैं?
एक स्रोत फ़ाइल से पढ़ें.
एक समारोह क्या है - हाँ.
>> छात्र 22: यह fread है?
>> जेसन Hirschhorn: fread.
मैं के साथ छड़ी लगता है अब के लिए एक कि.
तर्क किस तरह का fread ले करता है?
>> छात्र 22: शायद फाइल प्रकार, और फिर फ़ाइल का स्थान?
>> जेसन Hirschhorn: मैं यहाँ किस प्रकार कर सकते हैं यह पता लगाने के लिए तर्क का क्या प्रकार
fread लेता है?
>> कई छात्रों: यार fread.
>> जेसन Hirschhorn: यार fread और fwrite.
वे एक साथ बाहर लटका की तरह लग रहा है.
तो fread कितने तर्क लेता है?
>> छात्र 23: चार.
>> जेसन Hirschhorn: यह लेता है चार तर्क.
यह एक सूचक, एक आकार लेता है, और है कि अजीब है जो बात है, और कुछ फाइल.
ठीक है?
यहीं इसके बारे में पढ़ा करते हैं.
"समारोह fread n memb पढ़ता डेटा के तत्वों, हर आकार बाइट्स
लंबे, धारा से द्वारा की ओर इशारा स्थान पर उन्हें भंडारण, धारा
सूचक द्वारा दी गई. "
>> तो चार तर्क.
क्यों मैं सिर्फ यह की नकल नहीं है, और यहीं चिपकाएं.
ठीक है.
तो जो बाहर भरने शुरू कर सकते हैं मेरे लिए ये तर्क?
Avi.
>> AVI: शून्य बाहर ले जाओ.
बस स्रोत रखो.
सूचक और स्टार ले लो.
स्रोत रखो.
तब -
>> जेसन Hirschhorn: तो मैं बंद करने के लिए जा रहा हूँ वहाँ आप, यह गलत है क्योंकि.
आप स्रोत के साथ ठीक कह रहे हैं, लेकिन स्रोत: कहाँ जाना चाहिए?
>> [INTERPOSING आवाज़ें]
>> जेसन Hirschhorn: यह चाहिए यहां पर चलते हैं.
उस स्रोत है - हमारे स्रोत एक प्रकार है.
चलो यहाँ देखते हैं.
यह एक प्रकार की फ़ाइल * के लिए पूछ रहा है, हम वास्तव में आम तौर पर लगता है कि जैसे उन्हें देखते हैं.
तो इस का एक तर्क के लिए पूछ रहा है * स्रोत है कि कहा जाता धारा फ़ाइल प्रकार.
ठीक है?
>> बातें करते हैं की क्या आकार हम पढ़ना चाहते हैं?
मैं में आप यह दिया समस्या विवरण.
>> छात्र 24: एक समय में एक बाइट.
>> जेसन Hirschhorn: एक बाइट.
एक बाइट कितना बड़ा है?
इसका आकार बाइट्स में है, तो क्या हुआ मैं अभी वहाँ रख सकते हैं?
>> छात्र के 25: एक.
>> जेसन Hirschhorn: एक.
ठीक है.
इसका आकार इकाई बाइट में है, इसलिए 1 1 बाइट है.
मैं एक समय में पढ़ने के लिए कितने चाहते हैं.
>> छात्र 26: एक?
>> जेसन Hirschhorn: एक बात.
मैं आकार की एक बात को पढ़ने के लिए चाहते हैं 1, एक समय में एक टुकड़ा.
मैंने इसे पढ़ा और एक बार जहाँ मैं इसे रखा है?
>> छात्र 27: गंतव्य?
>> जेसन Hirschhorn: तो मैं नहीं डाल सकते हैं यह सीधे गंतव्य में.
>> छात्र 28: तुम डाल रहे हैं यह एक तिहाई सूचक में?
>> छात्र 27: गंतव्य के लिए.
>> जेसन Hirschhorn: ठीक है.
हाँ.
>> छात्र 29: आप के लिए कुछ घोषणा कर सकते हैं एक अस्थायी भंडारण पहले के रूप में कार्य.
>> जेसन Hirschhorn: ठीक है.
मुझे दे.
>> छात्र 29: एक और फाइल सूचक, हो सकता है?
>> जेसन Hirschhorn: ठीक है.
तो यह शून्य सितारा है -
यह एक प्रकार का शून्य सितारा है, इसलिए यह नहीं है एक फ़ाइल सूचक होना है.
और मैं एक बाइट पढ़ रहा हूँ, एक अच्छी जगह होगी जहां
एक बाइट स्टोर करने के लिए?
>> छात्र 29: एक सरणी?
>> जेसन Hirschhorn: एक सरणी.
ठीक है.
और कुछ है कि और क्या है सिर्फ एक बाइट आकार?
>> छात्र 30: एक चार *?
>> छात्र 29: हाँ.
>> जेसन Hirschhorn: एक चार * एक बाइट नहीं है.
>> छात्र 29: एक चार.
>> जेसन Hirschhorn: एक चार एक बाइट है.
है ना?
तो चलो इस बफर कहते हैं एक सामान्य है स्टोर करने के लिए इन बातों के लिए उपयोग किया गया नाम
कुछ अस्थायी रूप से.
तो मैं एक बफर बनाने.
है ना?
लेकिन यह * एक शून्य ले करता है.
तो शायद आप ठीक कह रहे हैं कि यह आकार 0 से बफर होना चाहिए.
तो यह एक स्टोर -
सही.
>> क्योंकि यहां यह सही - चार बफर एक चरित्र है, लेकिन
इस * एक शून्य लेता है -
एक सूचक.
तो अब मैं यह कर सकता है बफर एक सूचक है.
मैं और क्या कर सकता है?
>> छात्र 31: चार के बगल में एक सितारा रखो.
>> जेसन Hirschhorn: मैं कर सकता यह * चार बनाया है.
ठीक है.
मैं कर सकता है एक और बात क्या है?
या फिर इस एक साथ चलते हैं.
चार * बफर, तो क्या हुआ मैं यहाँ में रखा है?
>> छात्र 31: बफर.
>> जेसन Hirschhorn: बफर.
बफर एक चार के लिए एक संकेत है.
और उस स्थान में, हम डाल रहे हैं हम पढ़ा है कुछ की एक बाइट.
हाँ.
Avi.
>> AVI: बस एक त्वरित सवाल.
आप बफर malloc करना चाहते हैं?
>> जेसन Hirschhorn: कौन कर सकता है उस सवाल का जवाब?
>> छात्र 32: खैर, यह सच नहीं अभी कुछ भी करने के लिए बिंदु, तो -
>> जेसन Hirschhorn: लेकिन ऐसा हम यह malloc करना चाहते हैं?
>> छात्र 32: आप यह कर रहे थे कि आप की जरूरत थी क्योंकि जिस तरह से, मैं, हाँ, लगता है
यह करने के लिए बात करने के लिए कुछ जगह.
>> जेसन Hirschhorn: हम करते हैं यह malloc के लिए है?
>> छात्र 33: आप करने जा रहे हैं पाश के बाहर इसका इस्तेमाल.
>> जेसन Hirschhorn: हम करने जा रहे हैं पाश के बाहर इसका इस्तेमाल?
>> छात्र 34: हाँ.
>> छात्र 35: रुको.
हम यह घोषित करना चाहते हैं परे करने के लिए पाश में?
>> जेसन Hirschhorn: तो मुझे लगता है हमें लगता है यहाँ हम कर रहे हैं कि कुछ छद्म जबकि पाश
, यह पता लगाने की कोशिश कर रहा है कि हम अभी तक नहीं मिल गया है.
हम यह malloc की जरूरत नहीं है.
हम मुख्य में काम कर रहे हैं, यह केवल जा रहा है इस लूप के अंदर इस्तेमाल किया जाएगा.
यह अस्तित्व की जरूरत नहीं है इस बाहर.
>> तो यह एक स्थानीय चर हो सकता है.
आप एक संकेतक के लिए है एक स्थानीय चर.
>> छात्र 36: लेकिन यह नहीं है कुछ की ओर इशारा करते.
>> जेसन Hirschhorn: नहीं, यह नहीं है कुछ भी करने के लिए प्रारंभ.
लेकिन हम भी इसका इस्तेमाल करने के लिए नहीं जा रहे हैं.
हम में कुछ करने जा रहे हैं यह पहली बार हम इस्तेमाल करते हैं.
तो यह ठीक लगता है.
तो हम यहाँ malloc की जरूरत नहीं है.
मैं और क्या है के रूप में यह ठीक लगता है.
ठीक है.
हम fread लाइन है.
की अगली पंक्ति करते हैं.
>> हम एक फ़ाइल में लिखने के लिए चाहते हैं, क्या है ऐसा करने के लिए उपयोग करने के लिए एक अच्छा समारोह?
>> छात्र 37: fwrite?
>> छात्र 38: fprintf?
>> जेसन Hirschhorn: fprintf एक है.
एक और एक क्या है?
>> छात्र 39: fwrite.
>> जेसन Hirschhorn: fwrite.
और हमारे उद्देश्यों के लिए, fwrite, हम यहां जो देखा है,
शायद बेहतर विकल्प.
यह रूप में अच्छी तरह से चार तर्क लेता है.
निशांत, आप दे सकते हैं तर्क मुझे?
>> निशांत: पहले एक जा रहा है सिर्फ बफर हो.
>> जेसन Hirschhorn: ठीक है.
>> निशांत: एक दूसरे के सिर्फ 1 होने जा रहा.
तीसरे एक 1 होने जा रहा है.
और चौथा एक डीएसटी होने जा रहा है.
>> जेसन Hirschhorn: किसी को भी करता है कि रेखा के बारे में किसी भी सवाल?
यह अच्छा लग रहा है.
ठीक है.
तो अब यह हम कर रहे हैं एक बात की तरह लग रहा है लापता - वास्तव में, के लिखने
इस अंतिम पंक्ति.
फ़ाइलें बंद करें.
कौन लेखन हमें खत्म कर सकते हैं इन पिछले दो लाइनें?
हां.
क्षमा करें, आपका नाम क्या है?
>> लुसी: लुसी.
>> जेसन Hirschhorn: लुसी.
>> लुसी: तो fclose स्रोत और fclose गंतव्य.
>> जेसन Hirschhorn: fclose, खुला कोष्ठक, स्रोत, करीब कोष्ठक, अर्धविराम.
और fclose -
हाँ?
>> लुसी: ओपन कोष्ठकों, डीएसटी और फिर अर्धविराम.
>> जेसन Hirschhorn: महान.
और मैं अंत में क्या शामिल होना चाहिए?
>> लुसी: 0 लौटें.
>> जेसन Hirschhorn: 0 लौटें.
मैं करने के लिए है?
बस एक सवाल है.
हम वापसी 0 शामिल करने के लिए है?
>> कई छात्रों: नहीं
>> जेसन Hirschhorn: नहीं
मुख्य स्वचालित रूप से यह करता है आप समाप्त करने के लिए मिलता है.
लेकिन मैं यह करने के लिए अच्छा लगता है स्पष्ट रूप से यह भी शामिल है.
हम अन्य लौट रहे हैं, खासकर जब कार्यक्रम के दौरान बातें.
ठीक है.
यह हम याद कर रहे हैं क्या है -
क्या हैं?
कौन कुछ के बारे में सोच सकते हैं -
के कुछ समझ है क्या बातें में वहाँ जा सकता है?
यह बस कुछ pseudocode में भले ही भाषा की तरह?
>> हम वास्तव में क्या कर रहे हैं - क्या हम जब तक जाना चाहते हो?
हाँ, लुसी.
>> लुसी: फाइल के अंत.
>> जेसन Hirschhorn: फाइल के अंत.
तो आप फ़ाइल के अंत से क्या मतलब है?
>> लुसी: आप तक पहुँचते हैं फ़ाइल का अंत, बंद करो.
>> जेसन Hirschhorn: ठीक है.
तो एक बार हम फ़ाइल के अंत तक पहुँचते हैं.
हम पर पहुंच गया है जब हमें कैसे पता चलेगा फ़ाइल का अंत?
>> छात्र 40: मैं बफर लगता नल पर सेट हो जाएगा.
>> छात्र 41: बफर घोषित किया जाता है लूप के अंदर.
>> जेसन Hirschhorn: तो आपको लगता है कि बफर नल करने के लिए निर्धारित किया जाएगा.
क्यों अशक्त करने के लिए सेट किया जा बफर होगा?
>> छात्र 40: जब आप क्योंकि fread, आप डालने की कोशिश कर रहे हैं
बफर में कुछ भी नहीं है.
>> जेसन Hirschhorn: ठीक है.
तो आप fread सोच रहे हैं -
हम के अंत तक पहुँच गए जब फ़ाइल, क्या fread करने जा रहा है?
मुझे लगता है कि सवाल है हम यह पता लगाने की है.
Fread क्या करता है?
यह बफर में रिक्त रखा है, या करता है यह कुछ और क्या करता है?
हम कैसे यह क्या करता है यह पता लगाने कर सकते हैं?
>> छात्र 42: द.
>> जेसन Hirschhorn: यार.
तो चलो यहाँ देखते हैं.
मूल्य वापसी.
सफलता, fread में और लौटने fwrite पढ़ने के लिए या लिखित मदों की संख्या.
यह संख्या बाइट्स की संख्या के बराबर होती है आकार 1 है केवल जब स्थानांतरित कर दिया.
कोई त्रुटि होती है, या का अंत तो फ़ाइल तक पहुँच जाता है, वापसी मान एक है
कम मद गिनती या 0.
>> इसलिए हमारे उद्देश्यों के लिए, अगर fread पहुँचता फ़ाइल का अंत, और से पढ़ता
फाइल के अंत में, कुछ नहीं बचा है पढ़ने के लिए, क्या यह वापस करने के लिए जा रहा है?
>> छात्र 43: शून्य?
>> जेसन Hirschhorn: क्या?
>> छात्र 43: शून्य?
>> जेसन Hirschhorn: शून्य.
यह शून्य वापस जाने के लिए जा रहा है.
इसलिए हम हम है कि जब fread, पता फ़ाइल के अंत तक, जा रहा है
शून्य वापस जाने के लिए.
कैसे हम अपने लाभ के लिए उपयोग कर सकते हैं?
>> AVI: तुम बाहर एक चर घोषणा कर सकते हैं चेक बुलाया पाश की.
चेक बराबर होती है -
अब के लिए - एक.
>> जेसन Hirschhorn: ठीक है.
>> AVI: और फिर आप किसी IF डाल सकते हैं सही fread कह के बाद बयान अगर
fread शून्य के बराबर होती है -
नं.
>> जेसन Hirschhorn: कौन एवी मदद कर सकते हैं?
>> AVI: मूल्य क्या है fread द्वारा दिया गया?
>> जेसन Hirschhorn: हम बस कि खत्म हो गया था.
>> AVI: आप यह कैसे प्रतिनिधित्व करते हैं?
>> जेसन Hirschhorn: तो यह देता है - चलो यहाँ ऊपर देखो - यह एक रिटर्न
अनिवार्य रूप से है जो size_t, एक पूर्णांक.
तो यह एक पूर्णांक देता है.
और हमारे मामले में, यह होगा 1 या 0 वापसी -
1 यह एक बात पढ़ें - एक बाइट, और 0 हम अंत तक पहुँच गए हैं.
तो fread हैं -
हाँ?
>> छात्र 45: आप अभी भरा नहीं डाल सकते हैं में fread (बफर, 1, 1, एसआरसी)
पाश जबकि?
>> जेसन Hirschhorn: तो आप का प्रस्ताव वहाँ में यह कर रही है?
>> [INTERPOSING आवाज़ें]
>> जेसन Hirschhorn: रुको.
तो हम इस बात का मुक्त कर रहे हैं.
तो तुम डाल प्रस्ताव कर रहे हैं fread वहाँ में?
क्या हम भी बढ़ना चाहिए आप क्या करना चाहते हैं?
>> छात्र 45: के बाहर बफर.
>> जेसन Hirschhorn: हम चाहिए यहाँ भी इस बाहर चले जाते हैं.
>> छात्र 45: लेकिन करता है कि लगातार इसे आगे बढ़ने?
>> [INTERPOSING आवाज़ें]
>> जेसन Hirschhorn: ठीक है.
तो इस Okshar प्रस्तावित क्या है.
हम अपने बफर बनाने.
जब तक हम fread, तो हम fwrite.
इस पर विचार?
>> छात्र 46: मेरा एक ही सवाल है, होता है यह वास्तव में आदेश fread निष्पादित?
>> जेसन Hirschhorn: बड़ा सवाल है.
आप एक समारोह कॉल डाल रहे हैं जब एक शर्त के अंदर नहीं है कि,
समारोह कॉल निष्पादित?
हम इस बारे में पहले उदाहरण देखा है.
है ना?
>> छात्र 46: ठीक है.
हाँ.
इसलिए इसे लागू करता है.
>> जेसन Hirschhorn: हम चीजों को देखा है उससे पहले, हम हैं जहां की तरह एक
एक शर्त के अंदर समारोह कॉल.
उस समारोह कॉल निष्पादित करता है?
हां.
तो जवाब है हां.
इस समारोह कॉल पर अमल करेंगे.
लेकिन फिर, यह हम क्या चाहते है?
>> हम समझ सकता है एक तरीका क्या है यह हम क्या चाहते है बाहर तो क्या होगा?
>> कई छात्रों: यह भागो?
>> जेसन Hirschhorn: हम इसे चला सकता है.
हम ऐसा लेकिन इससे पहले कि हम कर सकते थे इस के माध्यम से कारण है.
तो -
हम में से एक बाइट का कहना है कि हमारे हम यहाँ के लिए मिल जाएगा, फ़ाइल,
हम इस कोड को मिलेगा.
इस चलेंगे.
fread एक बाइट लौट सकते हैं और करेंगे यह बफर में दुकान.
और यह 1 पर मूल्यांकन करेंगे ठीक है, के बाद वह 1 देता है.
>> तो, जबकि 1.
कि अंदर कोड मतलब यह है जबकि पाश अमल करेंगे?
>> छात्र 47: हाँ.
यह सच है.
>> जेसन Hirschhorn: हाँ.
1 सच है.
यह 0 नहीं है.
यहाँ तो अंदर कोड पर अमल करेंगे.
इसलिए हम चाहते हैं कि लिखेंगे.
हम यह करने के लिए वापस कदम होगा रेखा एक बार फिर से.
अब हम हैं -
हम अपने फाइल के अंत में कर रहे हैं.
हम अपनी फाइल के अंत से पढ़ा, हम केवल उस में एक बाइट था.
>> Fread 0, दुकानों रिटर्न बफर में कुछ.
मैं ईमानदारी से पता नहीं क्या यह बफर में संग्रहीत करता है.
हम शायद लग सकता है यह क्या करता है यह देखने के लिए.
मैं ईमानदारी से नहीं जानता कि.
हम क्या परवाह कौन करता है, पता नहीं है यह बफर में संग्रहीत करता है?
लेकिन यह 0 वापसी करता है.
और 0 पर अमल करते हुए होगा?
>> 0 पर अमल नहीं होगा.
तो फिर हम यहाँ नीचे कदम होगा.
तो चलो हाथ के एक शो के लिए चलते यह अगर हम चलाते हैं, या हम अगर चाहिए कोड है
पहला परिवर्तन करना चाहिए.
अगर आपको लगता है - तो आप वोट करने के लिए है.
आप हम इस कोड को चलाने चाहिए अगर आपको लगता है के रूप में है, अपना हाथ बढ़ा कर दीजिये.
>> ठीक है.
वहाँ एक है -
आप एक सवाल है, चिंता की क्या ज़रूरत है?
हाँ.
>> छात्र 48: हम बफर ले जाने के बाद लूप के बाहर, हम करते हैं
यह malloc के लिए है?
>> जेसन Hirschhorn: बड़ा सवाल है.
हम में से बाहर बफर ले जाने के बाद पाश, हम यह malloc के लिए क्या है?
यह एक दायरे सवाल है.
हम बाहर बफर इनिशियलाइज़ हैं इस पाश की, यह मौजूद होगा
लूप के अंदर?
>> कई छात्रों: हाँ.
>> जेसन Hirschhorn: हाँ.
इसके दायरे, लूप के अंदर शामिल किया गया और, वास्तव में, कुछ भी अंदर यह नीचे
सहित इस कोड की यहां के अंदर बातें.
इसलिए हम यह malloc की जरूरत नहीं है.
यह एक स्थानीय चर है, और इसके दायरे अभी भी लूप में शामिल हैं.
>> छात्र 49: हम इसे मुक्त करने की जरूरत है?
>> जेसन Hirschhorn: हम करते हैं मुक्त बफर करने की आवश्यकता है?
>> छात्र 49: हाँ, हम malloc नहीं है.
>> जेसन Hirschhorn: हम करते हैं मुक्त बफर करने की आवश्यकता है?
हम नहीं करते.
फिर, यह एक स्थानीय चर रहा है, इसलिए हम इसे मुक्त करने की जरूरत नहीं है.
ठीक है.
के देखो क्या होता है.
तो यह गई है.
यही कारण है कि क्या कुछ था कि मार्कस पहले प्रस्ताव रखा.
इसलिए हम चाहते हैं कि त्रुटि, चर बफर यहां इस्तेमाल किया जब गई है.
>> हम यह कैसे तय कर सकते हैं?
>> छात्र 50: यह malloc?
>> छात्र 51: रिक्त बराबरी?
>> छात्र 52: बफर खबरें बराबर होती कहो.
>> जेसन Hirschhorn: ठीक है.
अच्छा लग रहा है.
अब हम यह है.
की नकल की कोशिश करने के लिए कुछ पैदा करते हैं.
इसलिए हम अपने पाठ फ़ाइल है.
हम कैसे इस कार्यक्रम चला सकते हैं?
हाँ.
>> छात्र 53: आप डॉट कर सकते हैं सी.पी., test.txt स्लेश.
और फिर तुम एक फ़ाइल नाम कर सकते हैं इसे में स्टोर होगा जो.
>> जेसन Hirschhorn: ठीक है.
हम यह out.txt फोन करता हूँ.
कूल?
Seg गलती.
SEG गलती पर विचार?
यह बहुत अच्छा है.
हम कैसे पता लगा सकते हैं जहां SEG गलती है?
क्या?
>> छात्र 54: Gdb.
>> जेसन Hirschhorn: Gdb.
हम GDB डॉट स्लेश लिख कर GDB चलाने हमारे कार्यक्रम का नाम.
वहाँ कोई कमांड लाइन तर्क.
हम एक सेट करने के लिए जा रहे हैं मुख्य पर ब्रेकपाइंट.
मैं GDB शुरू करना चाहते हैं, तो मैं क्या करूँ?
>> छात्र 55: आर
>> फिर आर और क्या जेसन Hirschhorn?
>> छात्र 55: तर्क?
>> जेसन Hirschhorn: तो आदेश पंक्ति तर्क.
के माध्यम से चलते हैं.
एन सिर्फ रेखा ने मुझे लाइन ले जा रहा है.
मैं जा रहा हूँ जब तक मैं अपने SEG गलती मिलता है.
मेरे SEG गलती नहीं है.
Fread के कारण ऐसा लगता है मेरे SEG गलती.
मैं fread मेरे SEG त्रुटि कारण पता यह थी कि क्योंकि
लाइन हम सिर्फ मार डाला.
>> और था कि केवल एक चीज उस लाइन में हो -
दो बातें हो गया.
Fread जा रहा था, और फिर हम थे कुछ देर की जाँच कर रही है.
मैं शर्त को तैयार हूँ कि जब तक जाँच मेरे SEG गलती के कारण नहीं किया गया था.
सबसे अधिक संभावना है, fread था मेरे SEG गलती के कारण.
मैं भी यहाँ कुछ, memcopy देखें.
>> मेमोरी प्रतिलिपि.
से स्मृति घूम रहा तरह लगता है दूसरे के लिए एक स्थान.
क्या होगा कि कुछ की तरह लगता है fread में, शायद कुछ स्मृति
यहां तक ​​यहां से बढ़ रहा है.
फिर इस के माध्यम से चलते हैं.
कैसे मैं इसे शुरू करते हैं और इसे फिर से चलाने?
हाँ.
>> छात्र 56: तुम डाल करने की ज़रूरत है बफर से पहले एक एम्परसेंड?
>> जेसन Hirschhorn: तो पहले एम्परसेंड बफर मुझे का पता देना होगा
* एक चार है जो बफर,.
चलो यह एक और समय के माध्यम से चलाते हैं.
कैसे मैं एक बार और यह माध्यम से चला सकता हूँ?
>> छात्र 57: आप कर सकते हैं बस फिर से चलाने लिखें?
>> जेसन Hirschhorn: बस फिर रन लिखें.
तो हम नहीं जा रहे हैं इस लाइन पर अमल.
तो बफर एक शून्य सूचक है.
सही?
यह करने के लिए इशारा कर रहा है - चलो देखते हैं.
हम हैं तो हमारी -
इस की एक त्वरित तस्वीर खींचना.
अगर हर कोई देख सकता हूँ मैं यहाँ पर लिखना?
>> तो ढेर में, हम एक स्थानीय है चर और यह बफर कहा जाता है, और
यह एक चार के लिए एक संकेत है.
क्या पता इस चार पर है?
>> छात्र 58: 0x0.
>> जेसन Hirschhorn: ठीक है.
यही कारण है कि यह क्या है.
यहाँ में, बफर अंदर, 0x0 संग्रहीत किया जाता है.
यही कारण है कि हम क्या किया है - हम अभी सेटअप.
इसलिए इस लाइन, fread, कुछ कहते हैं जहां स्रोत से?
इस बॉक्स या इस बॉक्स में?
जो बॉक्स?
बॉक्स या सही बॉक्स को छोड़ दिया?
यह सही बॉक्स.
>> यह सूचक इस प्रकार है, और यहाँ में डालता है.
हम पर कोशिश करते हैं और स्पर्श स्मृति जब स्थान 0, हमें क्या मिलता है?
विखंडन दोष.
यही कारण है कि हम अभी त्रुटि है.
हाँ.
>> छात्र 59: तुम नहीं है सितारा बफर रखा है?
नहीं या?
Fread के लिए?
>> जेसन Hirschhorn: तो fread एक सूचक लेता है.
तो यह बफर में गुजरता है.
और फिर यह करेंगे de-संदर्भ कहीं fread अंदर.
लेकिन फिर से, हमने देखा है, यह एक सूचक लेता है.
हम यह सितारा बफर पारित करने की जरूरत नहीं है.
यही गुजर जाएगी यह यहाँ है जो भी हो.
और कहा कि शायद हमें एक त्रुटि देना होगा हम यह de-संदर्भित कर रहे हैं.
>> है ना?
हम इस सूचक संदर्भ de करते हैं, जब हम इस स्थान तक पहुँचने का प्रयास,
हम एक त्रुटि हो रही है - हमारे विखंडन दोष.
तो -
उफ़.
हम GDB से बाहर छोड़ने के लिए जा रहे हैं.
हमारी लाइन -
हमारी समस्या - सही है यहां इस लाइन पर.
और यह एक समस्या है क्योंकि इस लाइन के.
>> कैसे हम एक बॉक्स बना सकते हैं fread में पहुँचा जा सकता है.
है ना?
हम एक है कि एक बॉक्स बनाने की जरूरत बाइट बड़े, एक चार का आकार.
लेकिन हमें लगता है कि बॉक्स सुलभ होने की जरूरत इस समारोह में चलता है.
तो जहां -
हाँ.
किसी भी विचार?
>> छात्र 60: बस के रूप में सेट किसी भी यादृच्छिक चरित्र.
बस चार बफर बराबरी करना चरित्र.
और फिर, तुम वहाँ बफर जब -
>> जेसन Hirschhorn: रुको.
चार बफर?
तो कोई सितारा?
>> छात्र 60: हाँ.
सितारा बाहर ले जाओ.
एक यादृच्छिक चरित्र बराबर होती है.
>> जेसन Hirschhorn: ठीक है.
तो मुझे एक दे.
>> छात्र 60: की तरह एक या कुछ और.
और फिर आप बफर है जब वहाँ, आप एक का उपयोग करें -
>> छात्र 61: स्टार?
अरे नहीं, एम्परसेंड.
>> छात्र 60: एम्परसेंड का प्रयोग करें.
>> जेसन Hirschhorn: ठीक है.
और क्या fwrite में के बारे में?
>> छात्र 60: फिर एम्परसेंड का प्रयोग करें.
>> जेसन Hirschhorn: सब ठीक है.
तो आपके विचार है, हम एक चार बनाने और तो उस में कुछ डाल दिया, और
कि चार लिखें.
>> छात्र 60: हाँ.
>> जेसन Hirschhorn: क्या लोगों को लगता है?
>> छात्र 62: यह जटिल है.
>> जेसन Hirschhorn: ठीक है.
चलो इसे बाहर आकर्षित करते हैं.
तो इस बार, मैं इस आकर्षित करने के लिए जा रहा हूँ हम तो यहां ढेर पर लाल, और
होगा -
ओह!
माफ़ कीजिए.
तो इस बार हम कुछ कहा जाता है बफर, और यह ढेर पर है.
सही?
और हम शुरू में, यह एक में बचत कर रहे हैं.
>> तो फिर हम fread करने के लिए हमारे कॉल है.
क्या fread इसमें से एक बाइट लेता है करता है हमारे फ़ाइल और इसे कहीं डालता है.
यह जो कुछ भी कहते हैं बात की ओर इशारा करते है.
खैर, हम यह पता था पहले -
0x0.
अब हम क्या पता है?
>> छात्र 63: जो भी हो पता बफर है.
>> जेसन Hirschhorn: जो भी हो पता बफर है.
यह शायद होने जा रहा है ऐसा कुछ.
शायद एक बी के साथ शुरू करने जा रहा है और फिर एक एफ, और छह अन्य है
हेक्साडेसिमल अंक.
कोई बात नहीं.
कुछ पता.
और हम अंदर उस पते गुजर रहे हैं
>> और हम अपने एक डाल करने के लिए जा रहे हैं उस पते पर बाइट बात.
इसलिए हम अपने एक डाल करने के लिए जा रहे हैं बाइट बात यहां के अंदर.
और फिर हम से लिखने जा रहे हैं अंदर यहां कभी क्या.
किसी को भी किसी भी सवाल है उस के बारे में?
कौन इस कोड काम करेंगे सोचता है?
>> अगर आपको लगता है अपने हाथ उठाओ इस कोड काम करेंगे.
आप एक रुख ले जाना है.
और कौन इस कोड काम नहीं करेगा सोचता है?
अपने हाथ उठाओ.
बाकी सब होना चाहिए उनके हाथ को ऊपर उठाने.
ठीक है.
माइकल, आप जहां खड़े हैं?
>> माइकल: मैं तय नहीं कर सकते.
एक तरह से बीच में.
>> जेसन Hirschhorn: आप कर रहे हैं बीच में.
एक उठाओ.
>> माइकल: मैं विश्वास करना होगा और यह काम करेगा कहते हैं.
>> जेसन Hirschhorn: ठीक है.
आप विश्वास है और यह काम करता है कहना होगा?
क्या हुआ?
>> [INTERPOSING आवाज़ें]
>> जेसन Hirschhorn: नहीं SEG गलती.
हम कैसे देखने के लिए जाँच कर सकते हैं दो बातें समान हैं?
दो फाइलें बराबर हैं.
>> छात्र 64: डिफ.
>> जेसन Hirschhorn: डिफ.
के बीच मतभेद के लिए डिफ चेक यह रिटर्न दो फ़ाइलें, और अगर
कुछ नहीं, वे समान हैं.
हम ऊपर खुला और, अगर हम अपनी फाइल मिलता है.
तो यह है कि सही समाधान किया गया.
हम इसे एक बार और वापस देखो.
हम वास्तव में भी नहीं था आरंभ करने की आवश्यकता है.
>> यह शायद एक सा लग रही होगी आप नहीं डाली यदि क्लीनर
वहाँ में यादृच्छिक कुछ.
बात की जा रही है, तुम बनाने की जरूरत से कुछ स्टोर करने के लिए कुछ स्थान
fread और कुछ ले fwrite के बाहर.
और वह बात थी एक स्थानीय हो या तो ढेर पर चर - आप
कुछ जगह malloc'd है सका.
>> इसलिए हम वास्तव में हो सकता है लिखित यहाँ malloc, और
कि काम किया होता.
और फिर हम भंडारण के गया होता कहीं ढेर पर हमारी बातें.
लेकिन यह शायद, वास्तव में है सबसे सुरुचिपूर्ण समाधान.
बस ढेर पर कुछ स्थान बना इन बातों को जाने के लिए.
>> मैं दो अन्य टिप्पणी के लिए होगा.
आप इस में मोड़ ले, और करने के लिए थे तब मेरी टिप्पणी, इस पर रन मिल
के रूप में निम्नानुसार होगा.
ये 1 यहाँ है, मेरे लिए, देखो जादुई संख्या की तरह.
यह 1, fread के मामले में, समझ में आता है.
चीज़ें है कि नंबर पढ़ने या लिखने के लिए.
>> लेकिन यह ठीक है यहाँ एक चाहिए शायद कुछ और हो.
एक तो समाधान क्या है?
>> छात्र 65: बाइट का आकार.
>> जेसन Hirschhorn: उस तरह?
>> छात्र 65: चार का आकार.
>> जेसन Hirschhorn: चार का आकार.
हाँ, बाइट एक प्रकार नहीं है.
चार निर्माण की तो आकार.
हम के शीर्ष पर, हो सकता है हमारे कोड, # कि परिभाषित किया.
कुछ बाइट और कहा जाता है यह वास्तव में एक चार है.
दरअसल, एक और भी बेहतर दृष्टिकोण इस गया हो सकता है -
uint.
किसी को भी यह है कि क्या पता?
>> माफ़ कीजिए.
मैं इसे पीछे की ओर है.
नहीं, रुको.
यह कौन सा रास्ता जाता है?
किसी को भी यह है कि क्या पता?
हाँ.
>> छात्र 67: मानकीकरण में मदद करने वाली सिस्टम चीजों के पार है कि
है - अहस्ताक्षरित पूर्णांकों की तरह 8 बाइट्स है कि?
>> जेसन Hirschhorn: यह है बिल्कुल सही.
विभिन्न मशीनों पर, एक चार का आकार -
नहीं आमतौर पर एक चार.
घर का काम आमतौर पर एक बाइट हैं.
लेकिन अन्य डेटा प्रकार के आकार के होते हैं एक 32 बिट मशीन पर विभिन्न आकार
एक 64 बिट मशीन बनाम.
एक uint8_t हमेशा 8 बिट है -
हमेशा एक बाइट.
>> और मैं शामिल करने की जरूरत है कि मानक INT हेडर फाइल.
तो अब, यह शायद हो गया होता इस कोड लिखने के लिए सबसे अच्छा तरीका है.
इसलिए मैं जादुई संख्या से छुटकारा मिलेगा.
और मैं यह भी एक अधिक तर्कसंगत है बफर के लिए लिखें.
यह एक बाइट है, बस एक चार नहीं है जो हम इसे होने की उम्मीद है.
>> और यहाँ, हम वास्तव में है थोड़ा और अधिक मजबूत हो गया.
हम जो, एक चार यह फोन नहीं कर रहे हैं -
हो सकता है, कौन जानता है - एक अलग हो सकता विभिन्न मशीनों पर आकार.
हम वास्तव में यह वास्तव में है क्या कह रहे हैं एक बाइट, हमेशा, कोई बात नहीं क्या.
हम यहाँ देखो, हम सी.पी. बनाते हैं.
ओह.
क्या हुआ?
>> छात्र 68: यह स्विच किया जा सकता है.
>> जेसन Hirschhorn: क्या?
>> छात्र 69: यह है?
>> छात्र 70: तुम नहीं किया एक प्रकार के रूप में परिभाषित करते हैं.
>> छात्र 71: लेकिन यह चाहिए मानक में परिभाषित किया.
>> छात्र 72: क्या चल रहा है?
>> छात्र 73: परिभाषित करना चाहिए सभी टोपियां हो?
>> जेसन Hirschhorn: तो यह नहीं है # को परिभाषित.
दरअसल, इस मामले में, मैं कर रहा हूँ typedef का उपयोग करने के लिए जा रहा है.
हम के रूप में प्रयोग कर रहे हैं क्योंकि एक स्थान में एक प्रकार का.
तो इस मामले में, हम वास्तव में चाहते हैं हम एक नए प्रकार का मुद्रण कर रहे हैं जैसे typedef
बाइट, और यह इस, अनिवार्य रूप से, है.
यह परिभाषित # की तुलना में थोड़ा अलग है.
>> और अब, हमारे कोड पूरी तरह से काम करता है.
तो, फिर, # कुछ लेता है परिभाषित, हर जगह यह जगह
दूसरी बात यह है के साथ.
यह सिर्फ एक मैक्रो है -
आशुलिपि जादुई संख्या से छुटकारा पाने के लिए.
लेकिन इस मामले में, क्योंकि हम कर रहे हैं एक प्रकार के रूप में प्रयोग -
यहीं -
वह काम करने के लिए आदेश में, हम की जरूरत जो कुछ भी बाइट typedef करने के लिए.
>> और हम यहीं यह परिभाषित कर रहे हैं.
यह वास्तव में है, एक संरचना नहीं है सिर्फ एक अहस्ताक्षरित पूर्णांक.
यह एक बाइट लंबा है.
इस कोड को ऑनलाइन उपलब्ध हो जाएगा, और आप सब ठीक है अब यह होना चाहिए.
>> तो हम हैं -
सही -
13 मिनट में जाने के लिए छोड़ दिया अधिक समस्या 5 सेट.
मैं एक साथ copy.c के माध्यम से चलना चाहते हैं और फिर हम संक्षेप में बात करेंगे
अन्य भागों के बारे में समस्या का सेट.
तो मुझे copy.c. ऊपर खींच
और शांत बात है कि हम वास्तव में है, है पहले से ही इस कोड का एक बहुत कुछ लिखा.
>> हम सचमुच लिखा कोड बस मैं था जब यहां से बाहर आया
अपने दम पर यह लिख.
लेकिन यह copy.c है नींव रूपों के पहले दो भागों के लिए
whodunit.c, के लिए सेट समस्या जो आप लिखने की जरूरत है, और resize.c.
तीसरे और अंतिम है जो Recover.c, समस्या सेट का हिस्सा नहीं है,
इस फाइल के बंद आधारित है.
>> आप उस फ़ाइल लिखने की जरूरत करने जा रहे हैं, हम तुम उस के लिए एक टेम्पलेट दे
फ़ाइल है, लेकिन यह कुछ भी नहीं है copy.c. साथ करने के लिए
लेकिन copy.c के लिए नींव है क्योंकि पहले दो भागों, हम जा रहे हैं
अब इसके माध्यम से चलना है, तो आप के लिए है यह क्या करता है की एक अच्छी भावना.
>> और टिप्पणियों के कुछ इसे दूर दे.
हम पहले से ही इस में से कुछ लिखा है.
सबसे पहले, हमें यकीन है कि कर रहे हैं हम तीन तर्क मिलता है.
अगला, हम फ़ाइल नाम याद कर रहे हैं.
इसलिए हम इस कदम को छोड़ दिया जब हम हमारी बात कोडित -
जब हमारे सी.पी..
लेकिन यहाँ, वे कर रहे हैं एक बिट क्लीनर यह.
>> वे सुनिश्चित करने के लिए जाँच कर रहे हैं में दोनों फाइलें, अच्छा कर रहे हैं
उन्हें खोलने के अलावा.
हम अभी यह सब कोड लिखा है, तो मैं कर रहा हूँ इस कोड पर ध्यान केन्द्रित करने के लिए नहीं जा रहा.
अगले करने के लिए विशिष्ट है कि कुछ सामान है हम प्रयोग कर रहे हैं फ़ाइलों के प्रकार जो
बिटमैप फ़ाइलें हैं.
बिटमैप फ़ाइलें कुछ मेटाडेटा है उनके साथ जुड़े.
>> तो बाइट्स की पहली जोड़ी फाइल के बारे में बताना.
वे का रंग नहीं हैं उस छवि में पिक्सेल.
वे फाइल के बारे में बताना.
और आप समस्या सेट के माध्यम से पढ़ा है, आप और अधिक जानकारी के लिए होगा
मेटाडाटा संरचनाओं का क्या प्रकार पर बिटमैप्स के साथ शामिल हैं.
>> हम यह पहले क्यों है लेकिन है कि यहीं इस कोड - के सेट.
हम मेटाडाटा पढ़ रहे हैं -
मेटाडाटा के दो टुकड़े - फाइल शीर्ष लेख और जानकारी हैडर.
और हम इसके बारे में कुछ हिस्सों की जाँच कर रहे हैं यकीन है कि यह एक सच बिटमैप फ़ाइल है कर
जारी रखने से पहले.
>> और फिर, इन विवरणों हम कर रहे हैं अब में जाने की जरूरत नहीं है.
आप समस्या सेट के माध्यम से पढ़ा है, आप इन समझ जाएगा.
लंबी कहानी संक्षेप में, इन बस कह रहे हैं, यह एक बिटमैप फ़ाइल है, और
पुष्टि है कि.
>> अगला, हम उन लिख रहे हैं बाहर फाइल करने के लिए.
हम यहाँ देखते हैं कि.
हम बाहर सूचक को लिख रहे हैं.
अगला, हम गद्दी का निर्धारण कर रहे हैं.
तो फिर, जैसा ख़ासियत के साथ है एक बिटमैप फ़ाइल, कुछ लाइनों में शामिल
अंत में पैडिंग.
और आप समस्या सेट के माध्यम से पढ़ा है, आप गद्दी के बारे में अधिक जानकारी मिलेगी.
इस गद्दी को खोजने के लिए सूत्र है.
>> याद रखना महत्वपूर्ण -
आप एक बिटमैप का आकार बदलने जब , गद्दी परिवर्तन फ़ाइल.
आप एक का आकार परिवर्तित करते हैं , गद्दी परिवर्तन फ़ाइल.
यह होने जा रहा है कभी नहीं 3 से अधिक -
यह 3 के माध्यम से समावेशी 0 हो जाएगा.
लेकिन अगर आप का आकार बदलने जब कुछ, गद्दी परिवर्तन.
>> मैं केवल उस पंक्ति में एक पिक्सेल है, तो मैं , गद्दी की तीन बाइट्स की जरूरत है क्योंकि
प्रत्येक पंक्ति चार के गुणकों हो गया है एक बिटमैप फ़ाइल में लंबे बाइट्स.
लेकिन मैं यह दोगुना है, एक पिक्सेल से जाने के लिए दो पिक्सेल करने के लिए, जिनमें से प्रत्येक की,
हम कहते हैं, एक बाइट, तो मैं की जरूरत है बनाने के लिए गद्दी के दो बाइट्स
चार के लिए कि बराबर.
>> तो मैं कुछ का आकार बदलने के लिए, मैं राशि बदलने की जरूरत
गद्दी की मेरे पास है.
कि हर किसी को मतलब?
अगला, हम एक पंक्ति पर पुनरावृति, या सभी पंक्तियों के माध्यम से.
और फिर हम के माध्यम से पुनरावृति प्रत्येक पंक्ति में प्रत्येक स्तंभ.
हम जैसे इस बिटमैप इलाज कर रहे हैं एक ग्रिड, जैसे हम व्यवहार किया है
15 में बोर्ड.
>> जैसा कि हम ईंटों जब इलाज हम उन्हें स्क्रीन पर मुद्रित.
पंक्तियों और स्तंभों का एक ग्रिड.
तब - हम यह देखा.
हम वास्तव में सिर्फ इस कोडित.
हम कुछ अस्थायी भंडारण बनाया.
हम तो वहाँ में पढ़ा है, और हम इसे लिखने के बाहर.
यह हम सिर्फ था कि वास्तव में क्या है.
>> मैंने कहा अगला, क्योंकि प्रत्येक पंक्ति कुछ padding में समाप्त होता है, हम
उस गद्दी पर छोड़ -
पुरानी गद्दी.
और फिर हम इसे वापस जोड़ें.
इस मामले में, हम बना रहे हैं एक ही सटीक फ़ाइल.
हम सिर्फ यह नकल कर रहे हैं.
इसलिए इस लाइन मूर्ख की तरह है.
हम कर सकते थे सचमुच बस अंदर गद्दी डाल
>> लेकिन आप फ़ाइल का आकार बदलने के लिए, आप अभी भी इस लाइन चाहते हैं?
हम एक फ़ाइल के आकार को बदल तो हैं, हम अभी भी छोड़ना चाहते हैं
पुरानी गद्दी पर?
>> छात्र 74: हाँ.
>> जेसन Hirschhorn: तो हम करते हैं.
यह, फिर से, सौदों क्योंकि स्रोत फ़ाइल के साथ.
हम गद्दी के बारे में परवाह नहीं है स्रोत फ़ाइल से.
हम अगली पंक्ति में जाना चाहते हैं.
लेकिन हम बस वापस मत डालो गद्दी के पुराने राशि.
हम वापस खड़ा करने की जरूरत गद्दी की नई राशि.
>> तो हम एक का आकार बदल रहे हैं जब फ़ाइल, हम अभी भी पर छोड़ करना चाहते हैं
पुरानी फाइल में गद्दी - क्या हम से में पढ़ रहे हैं.
लेकिन हम क्या लिख ​​रहे हैं, हम जा रहे हैं कुछ अलग वापस खड़ा करने की जरूरत के लिए
गद्दी की संख्या कि हम निर्धारित किया है.
हाँ.
>> छात्र 75: उन दो का आदेश लाइनों सही, कोई फर्क नहीं पड़ता?
आप देख रहे हैं क्योंकि अलग फ़ाइलों.
>> जेसन Hirschhorn: बिल्कुल.
इन दो लाइनों का आदेश कोई फर्क नहीं पड़ता.
हम इस पंक्ति में लिखें.
इस फाइल के लिए यहाँ है हम करने के लिए लिख रहे हैं.
यह महत्वपूर्ण है, इसलिए हम मिल गद्दी की सही मात्रा में.
इस में फाइल के साथ सौदा किया है.
हम सही छोड़ना चाहते हैं गद्दी पर.
>> हम पढ़ने के लिए नहीं चाहते हैं -
हम एक समय में एक बाइट पढ़ रहे हैं, हम उन गद्दी बाइट्स के बारे में परवाह नहीं है.
हम अगली पंक्ति में ले जाना चाहते हैं.
अंत में लुसी हमारे लिए दे दिया है, जैसे हम फाइलों को बंद करने और 0 वापसी.
तो इस copy.c. है
और हम वास्तव में लिखा था - हम में से अधिकांश खर्च की अनिवार्य रूप से, इस लेखन अनुभाग.
>> आप यह कर दिया.
तो उम्मीद है कि आप एक अच्छी समझ है यहां क्या हो रहा है की.
बड़ा फर्क है, ईमानदारी से, बस है साथ सौदों कि इस पहले भाग
बिटमैप फ़ाइलों के peculiarities.
तो मैं, मेरी अगली स्लाइड के रूप में है हम क्या करने की जरूरत है?
ठीक है, चलो whodunit के बारे में सोचते हैं.
>> और किसी के लिए जो माध्यम से पढ़ा समस्या सेट, हमें क्या
whodunit में क्या करने की जरूरत है?
बस.
Aleja.
>> Aleja: तुम भाग ले सकते हैं लाल अर्थ है कि प्रत्येक पिक्सेल की.
और फिर -
एक तरह से?
>> जेसन Hirschhorn: ठीक है.
इसलिए प्रत्येक के हिस्से के बाहर ले लाल अर्थ है कि पिक्सेल.
यही कारण है कि यह सब बंद है, लेकिन नहीं है.
>> छात्र 76: ठीक है, वहाँ यह करने के लिए अलग अलग तरीकों से.
>> जेसन Hirschhorn: ठीक है.
मुझे एक रास्ता दे.
>> छात्र 76: सब लाल बाहर ले जाओ, और फिर जोर देना नीले और हरे रंग.
>> जेसन Hirschhorn: ठीक है.
इसलिए इन दोनों तरीकों दिया -
हम इसे एक पिक्सेल देने की तरह लगता है, यह एक लाल, नीले और हरे रंग स्तर है.
हम रिश्तेदार के स्तर का बदलना चाहते हैं निर्भर करता है, लाल, नीले और हरे रंग
कि पिक्सेल पर.
इस कोड में हम बदलना चाहिए कहां रिश्तेदार, लाल, नीले और हरे रंग
किसी दिए गए पिक्सेल का स्तर.
हम इसे पढ़ा है के बाद -
हम इसे लिखने से पहले?
मुझे लाइन नंबर दे.
>> कई छात्रों: 83.
>> जेसन Hirschhorn: 83.
तो ठीक है यहाँ.
Whodunit के लिए, कोड आप की जरूरत लिखने के सभी अभी भी वहीं जाना चाहिए.
और कहा कि केवल कोड है आप लिखने की जरूरत है.
हमने सुना तरह, तुम सब करने की जरूरत है, क्योंकि कर, इन रिश्तेदार नीले बदल रहा है
प्रत्येक पिक्सेल से लाल और हरे रंग का स्तर.
>> आप इसे में पढ़ा है, और अब आप कर रहे हैं यह लिखने के लिए बाहर जा रहा है.
मैं कैसे मिलता है - मैं इस बात को अगर यहीं, ट्रिपल कहा जाता है, और यह की है
RGBTRIPLE लिखें -
खैर, हम bmp.h में देखा, तो RGBTRIPLE क्या है?
>> छात्र 77: यह एक संरचना है.
>> जेसन Hirschhorn: RGBTRIPLE एक संरचना है.
हम ठीक नीचे है कि यहाँ देखें.
और इसलिए मैं कहता हूँ, का उपयोग करना चाहता था संरचना के लाल स्तर, कैसे मैं ऐसा
इस संरचना के लाल स्तर तक पहुँचने?
>> [कक्षा अफवाहें]
>> छात्र 78: RGBTRIPLE.rgbtred?
>> जेसन Hirschhorn: यह सही है?
>> छात्र 79: यह ट्रिपल होना चाहिए बजाय RGBTRIPLE डॉट डॉट,?
>> जेसन Hirschhorn: ट्रिपल.
ट्रिपल स्थानीय चर रहा है, तो यहाँ, यहाँ कोई संकेत नहीं है.
तो हम बस डॉट संकेतन का उपयोग करें.
यह मेरे लाल के स्तर दे देंगे.
मैं इसे बदलना चाहते हैं, मैं सिर्फ सेट यह कुछ अलग करने के बराबर है.
तो फिर, कोड की इस पंक्ति तक पहुँचता यह इस संरचना के अंदर चर, और
हम कुछ नया करने के लिए सेट कर सकते हैं.
>> तो whodunit के लिए, फिर से, यह है संक्षेप में, हम क्या करने की जरूरत है.
बहुत आसान है.
बस कुछ रिश्तेदार का स्तर बदलने के लिए, और उस कोड चला जाता है जहां यह है.
दूसरी ओर, आकार, थोड़ा पेचीदा मामला है.
वास्तव में, आकार परिवर्तन शायद है इस समस्या के trickiest हिस्सा निर्धारित किया है.
हम इस पर जाने के लिए तीन मिनट है.
>> लेकिन फिर, हम पहले से ही लिखा है इस कोड की सबसे अधिक है, तो हम
बहुत परिचित होना चाहिए.
हम में क्या करना चाहते हैं कुछ बातें कर रहे हैं तुम पर पढ़ा है, आकार परिवर्तन
समस्या सेट?
आप उन्हें मुझे दे, तो हम उनके बारे में बात कर सकते हैं.
हम क्या करना चाहते हैं कुछ बातें क्या हैं?
>> छात्र 80: लंबवत रूप -
तो आप, यह क्षैतिज आकार बदलने के लिए है लेकिन खड़ी रूप में अच्छी तरह से इसे आकार?
>> जेसन Hirschhorn: तो हम दी रहे हैं अगर एक पिक्सेल, और हम एक से इसका आकार बदल करना चाहते हैं
दो का कारक है, अब यह होने की जरूरत क्षैतिज आकार बदला और आकार बदला
खड़ी.
कि मतलब?
हाँ.
इसलिए कि शायद सबसे बड़ी चुनौती है.
और हम एक सेकंड में उस के बारे में बात करेंगे.
हाँ.
>> छात्र 81: मैं इसके बारे में सोचा रास्ता आप प्रिंट इसे बाहर की जरूरत थी -
>> जेसन Hirschhorn: रुको.
तुमने क्या हमें नहीं बताया.
हम तर्क में बात करने जा रहे हैं.
>> छात्र 81: ठीक है.
सवाल क्या था?
>> जेसन Hirschhorn: तुम बस अपना हाथ उठाया.
इसमें कोई संदेह नहीं था.
मुझे यह प्रस्तुत करते हैं.
मुझे तो बस इस संक्षिप्त चर्चा की.
तो हम, हम करने के लिए एक पिक्सेल चाहते है दोनों क्षैतिज, इसे दोहराने और
खड़ी.
तो आदर्श क्या हम यहाँ क्या है, हम हमारे पिक्सेल में पढ़ा है, हम इसे लिखना
कई बार हालांकि कई.
>> लेकिन फिर हम, हमारे यहाँ चाल है क्योंकि तो हम करने के लिए छोड़ना चाहते हैं
अगली पंक्ति और इसे लिखने अगली पंक्ति की शुरुआत.
इसलिए हम दोनों को दोहराने के लिए चाहते हैं क्षैतिज और खड़ी, क्या है
ऐसा करने के लिए एक अच्छा तरीका है -
अच्छा एक है, हालांकि ऐसा करने के लिए?
इसलिए हम लगातार लेने की जरूरत नहीं है हमारे फ़ाइल आसपास बातें करने के लिए जगह.
>> यह सवाल नहीं हो सकता मतलब नहीं बनता, लेकिन मुझे लगता है कि एक
यह करने के लिए जवाब में मदद मिलेगी.
>> छात्र 82: एक सरणी बनाएँ?
>> जेसन Hirschhorn: तो चलो लगता है कि एक पंक्ति के रूप में प्रत्येक फाइल की.
की पंक्तियों के संदर्भ में सोचते हैं.
हम अपने छोटे से हमारी पहली पंक्ति है, तो तस्वीर है, हम उस पंक्ति बना सकते हैं
एक बड़ी तस्वीर से एक बड़ी पंक्ति में, और फिर हालांकि उस पंक्ति को दोहराने
यह दोहराया जा करने की जरूरत है कई बार, बल्कि पिक्सेल द्वारा पिक्सेल जा रहा से,
जब भ्रमित हो जाता है जो फाइलों के साथ काम कर रहे.
>> हम था क्योंकि अगर -
मैं अंतरिक्ष के बाहर चल रहा हूँ.
यह हमारी फ़ाइल है, और अगर हमारे पास है कि वहाँ एक पिक्सेल, और हम यह करना चाहते हैं
वहीं हम अभी भी कुछ बातें हैं वहाँ पर हम कर रहे हैं जाने के लिए जब कि जरूरत
लेखन और हमारी नई फ़ाइल बनाने -
हमारे फ़ाइल है कि दो बार के रूप में बड़ा है.
>> लेकिन यह फाइल कार्यों के साथ वास्तव में मुश्किल है नई लाइनों के लिए चारों ओर छोड़ करने के लिए
ऐसे ही, और फिर यहाँ वापस जाओ और वहाँ में बातें करना.
यह कुछ करने के लिए लगभग असंभव है ऐसे ही, कि अगर समझ में आता.
हम पंक्तियों के रूप में लगता है तो, हम कर सकते हैं हमारे पंक्ति ले, और फिर यह डाल -
खड़ी पंक्तियों को दोहराने.
>> और कहा कि हम आकार बदलने के साथ सौदा है खड़ी बल्कि क्षैतिज से.
उस तरह की जल्दी थी, और थोड़ा भ्रमित.
दुर्भाग्य से हमारे समय नहीं है.
मैं तुम लोगों के लिए बाहर खड़े होंगे यहाँ के बारे में प्रश्न हैं जो
की वसूली सहित समस्या सेट,.
>> तो चलो अब के लिए स्थगित करते हैं.
और फिर, आप कोई प्रश्न हैं, हम बाहर चैट कर सकते हैं.