காண்க: 1 ஒரு பார்க்கலாம் CS50 நூலகம் மணிக்கு, குறிப்பாக அதன் GetInt செயல்பாடு. இங்கே நாம் உண்மையான மூல வேண்டும் GetInt குறியீடு. அது நீண்ட நேரம் இல்லை என்று அறிவிப்பு, மற்றும் இது மிகவும் ஒரு வட்டத்திற்கு அமைகிறது - அந்த நேரத்தில் ஒரு முடிவிலா சுழற்சியில் - என்று மட்டுமே நாம் உண்மையில் ஒருமுறை ஒரு மதிப்பு கொடுக்கிறது நாம் எதிர்பார்க்கப்படுகிறது என்ன ஆயிற்று. அது வழியாக நடந்து செல்லலாம். , முதல் இங்கே கவனிக்க வளைய தொடங்கும் போது. நாம் குறியீடு ஒரு வரி உண்டு என்று அடுத்த கவனிக்க உண்மையில், GetString அழைக்கிறது ஒரு திரும்ப மதிப்பு சேமித்து மாறி, வகை சரம், வரி என்று. நாம் ஒரு நல்லறிவு காசோலை ஒரு பிட் செய்கிறோம். வரி == பூஜ்ய என்றால், நாம் ஆர்வமூட்டும் INT_MAX திரும்ப. இப்போது அது INT_MAX என்று மாறிவிடும் ஒரு சிறப்பு நிலையான வேறு அறிவித்தார் என்று மிகப்பெரிய சாத்தியம் குறிக்கிறது நீங்கள் ஒரு உள்ள பிரதிநிதித்துவம் முடியும் என்று எண்ணாக இந்த மாதிரி திட்டம். இப்போது நாம் தன்னிச்சையாக திரும்ப முடிவு ஒரு காவலாளி மதிப்பு INT_MAX வகையான, நாம் முன்பதிவு செய்து ஒரு ஒரு பிழை பொருள் ஏற்பட்டுள்ளது. எனவே நாம் செலுத்த விலை, நிச்சயமாக, ஆகிறது அந்த GetInt வெளிப்படையாக முடியாது உண்மையில் போன்ற பெரிய ஒரு எண் திரும்ப INT_MAX, அதை விரும்பினால் கூட, ஏனெனில், என்று திரும்ப மதிப்பு உண்மையில் வேண்டும் அழைப்பாளர் விளக்கம் - எவர் GetInt பயன்படுத்தி - சில வகையான ஒரு பிழை என. அடுத்து, நான் பிரகடனம் செய்த கவனிக்கிறது ஒரு முழு எண்ணாக n மற்றும் ஒரு கரி கேட்ச். குறியீடு இந்த வரிசையில் அடுத்த, நான் ஒரு அழைக்கிறேன் sscanf என்று செயல்பாடு, கடந்து செல்லும் நான்கு வாதங்கள். சரம், இதில் வரி, பயனர் ஒரு வடிவம் இது தட்டச்சு, "% நான்% கேட்ச்", நான் பயனர் வலிமையை எதிர்பார்கிறேன் என்று சரம் முகவரி தொடர்ந்து வகை, n, மற்றும் சி முகவரி. வாழ்க்கையில் இப்போது sscanf நோக்கம் உண்மையில் ஆகிறது தேடும் ஒரு சரம் ஸ்கேன் குறிப்பிட்ட வடிவமைப்பில் புரோகிராமர் இரண்டாவது வாதம் நடந்து வருகிறது. இந்த வழக்கில்,% நான் இருக்கிறேன் ,% C உள்ளது. Sscanf ஒரு எண்ணாக சந்திக்கிறது என்றால் பயனர் உள்ளீடு, என்று எண்ணாக சேமிக்கப்படும் n என்று மாறி, உள்ளே ஏனெனில் நாங்கள் மூன்றாவது வழங்கப்படுகிறது N முகவரி sscanf வாதம். எந்த sscanf உண்மையில் செல்ல முடியும் என்று அர்த்தம் அங்கு, அதிலே மதிப்பு மேம்படுத்த. இப்போது, வழக்கில் பயனர் வகைகள் மேலும் ஏதாவது ஒன்று அல்லது அதற்கு மேற்பட்ட இலக்கங்களை விட - வேறு வார்த்தைகளில் கூறுவதானால், ஏதேனும் ஒரு வகை எரிப்பதை - அதன் முகவரி என்று இரண்டாவது மாறி சி, நாம் அதன் நான்காவது என, sscanf கடந்து வாதம் மக்கள். இப்போது ஒரு சோதனை தலைகீழாக இருந்து கூடுதல் பாத்திரம் ஆகும் என்று அவர் ஒத்துழைக்கவில்லை என்றால், மற்றும் ஒரு முழு எண்ணாக விட வகைகள், நாம் இந்த அதை கண்டறிய முடியும் முறையில், அந்த வழக்கில், sscanf ஏனெனில் குறிப்பிடப்படுகிறது, 2 திரும்ப போகிறது என்று பெட்டிகள் இரண்டு செய்யப்பட்டிருந்தனர் மதிப்புகள். ஆனால் நாம் அதற்கு பதிலாக அந்த sscanf நம்பிக்கை மட்டும் பயனர் அதாவது, 1 திரும்புகிறார் ஒரு முழு எண்ணாக வழங்கப்படுகிறது. நாம் என்ன செய்ய வேண்டும் என்றால், sscanf உண்மையில் 1 கொடுக்கிறது? சரி, நாம் உடனடியாக வரி விடுவிக்க வேண்டும் என்று பயனர் தட்டச்சு, மற்றும் நாம் உடனடியாக கொண்டு, N திரும்ப ஒரு முழு எண்ணாக விட்டிருக்கும். வேறு, sscanf 1 திரும்பி, இல்லை என்றால் பயனர் எனவே ஒத்துழைக்க வில்லை, நாம் இன்னும் வரி விடுவிக்க, ஆனால் நாம் இப்போது மீண்டும் பயனரை. நாம் அது உள்ளே இன்னும் இருப்பதால் இல்லையெனில் முடிவிலா சுழற்சியில், செயல்முறை மீண்டும் தொடங்கும், ஒருவேளை மீண்டும், மற்றும் ஒருவேளை மீண்டும், வரை பயனர் உண்மையில் எங்களுக்கு ஒரு முழு எண்ணாக வழங்குகிறது.