>> स्पीकर 1: चलो एक नज़र रखना CS50 पुस्तकालय में,
विशेष रूप से अपने GetInt समारोह.
यहाँ हम वास्तविक स्रोत है GetInt के लिए कोड.
और यह बहुत लंबा नहीं है कि सूचना, और इसमें से अधिकांश एक समय पाश का गठन -
उस पर एक अनंत लूप - कि केवल हम वास्तव में कर लें, कोई मान देता है
हम क्या उम्मीद हो गया.
चलो यह माध्यम से चलते हैं.
>> यहाँ पहली बार नोटिस पाश शुरू होता है.
हम कोड की एक पंक्ति है कि अगले नोटिस कि वास्तव में, GetString कॉल
और एक में वापसी मान संग्रहीत चर, प्रकार स्ट्रिंग की, रेखा कहा जाता है.
हम तो एक मानसिक स्वास्थ्य की जांच के एक सा है.
लाइन == बातिल है, तो हम मजे की बात है INT_MAX वापसी.
>> अब यह INT_MAX पता चला है कि एक विशेष लगातार दूसरी जगहों घोषित
कि सबसे बड़ी संभव निर्दिष्ट करता है तुम एक में प्रतिनिधित्व कर सकते हैं कि int
इस तरह के कार्यक्रम.
अब हम मनमाने ढंग से लौटने का फैसला किया है के एक प्रहरी मूल्य के रूप में INT_MAX
प्रकार, हम के रूप में आरक्षित किया है कि एक एक त्रुटि अर्थ हुई है.
इसलिए हम मूल्य का भुगतान, ज़ाहिर है, कि GetInt जाहिरा तौर पर नहीं कर सकते
वास्तव में के रूप में बड़े रूप में एक संख्या में वापसी INT_MAX, यह करना चाहता है क्योंकि अगर,
कि वापसी मान सच में करना चाहिए फोन करने वाले ने व्याख्या की जानी -
जो कोई भी GetInt इस्तेमाल कर रहा है -
किसी प्रकार की कोई त्रुटि के रूप में.
>> अगला, मैं घोषणा की है कि नोटिस एक पूर्णांक n और एक चार ग.
कोड के इस अगली पंक्ति में, मैं एक कॉल sscanf बुलाया समारोह में गुजर
चार तर्क.
स्ट्रिंग है जो रेखा, उपयोगकर्ता एक प्रारूप है जिसमें लिखा है, "% i% ग",
मैं उपयोगकर्ता हो सकता है उम्मीद कर रहा हूँ कि स्ट्रिंग के पते के बाद प्रकार,
एन, और सी का पता.
जीवन में अब चलो sscanf उद्देश्य वास्तव में है की तलाश में एक स्ट्रिंग स्कैन करने के लिए
विशेष प्रारूप कि प्रोग्रामर कि दूसरा तर्क के रूप में निर्दिष्ट किया गया है.
इस मामले में,% मैं में है ,% ग के रूप में वहाँ.
Sscanf में एक पूर्णांक मुठभेड़ों तो अगर उपयोगकर्ता के इनपुट, कि INT संग्रहीत किया जाएगा
n बुलाया चर, के अंदर क्योंकि हम तृतीय के रूप में प्रदान की गई है
n के पते sscanf के लिए तर्क.
जो sscanf वास्तव में जा सकते हैं इसका मतलब है कि वहाँ, और उसमें मान अद्यतन.
>> अब इस मामले में उपयोगकर्ता प्रकार अधिक कुछ में
एक या एक से अधिक अंक की तुलना में -
दूसरे शब्दों में, किसी प्रकार की एक चार -
जिसका पता है कि दूसरे चर सी, हम अपनी चौथी रूप sscanf में पारित
तर्क भी बसा दिया जाएगा.
अब एक के लिए जाँच के ऊपर उपयोगकर्ता से अतिरिक्त चरित्र है
कि वह या वह सहयोग नहीं करता है, और सिर्फ एक पूर्णांक से अधिक में प्रकार,
हम इस में यह पता लगाने में सक्षम हो जाएगा ढंग, उस मामले में, sscanf क्योंकि
वाचक, 2 वापस करने के लिए जा रहा है कि प्लेसहोल्डर्स के दोनों भर गया
मूल्यों के साथ.
लेकिन हम बजाय कि sscanf उम्मीद कर रहे हैं केवल उपयोगकर्ता, जिसका मतलब है 1 रिटर्न
एक पूर्णांक प्रदान की.
>> हम क्या करते हैं अगर sscanf वास्तव में 1 देता है?
ठीक है, हम तुरंत लाइन मुक्त है कि उपयोगकर्ता तब में टाइप करें, और हम
तुरंत होने, एन लौटने एक पूर्णांक मिल गया.
वरना, sscanf 1 वापसी, और नहीं करता है उपयोगकर्ता इसलिए सहयोग नहीं किया,
हम अभी भी लाइन मुक्त है, लेकिन हम अब पुन: प्रयास करने के लिए संकेत.
और हम उस के अंदर अभी भी कर रहे हैं क्योंकि अन्यथा अनंत लूप, प्रक्रिया
फिर से शुरू, और शायद फिर से करेंगे, और शायद फिर से, जब तक उपयोगकर्ता वास्तव में
हमें एक int प्रदान करता है.