अलग scanf प्रारूपों के बीच का अंतर




formatting (2)

विकिपीडिया से

व्हाइटस्पेस: कोई भी सफेद स्थान अक्षर शून्य या अधिक सफेद स्थान वर्णों के लिए एक स्कैन को ट्रिगर करता है। संख्या और प्रकार के व्हाटस्पेस पात्रों को किसी भी दिशा में मिलान करने की आवश्यकता नहीं है।

scanf के बारे में इनपुट का उपभोग रखने और उस चीज को प्राप्त करने के बारे में है जो आप की देखभाल करते हैं प्रारूप स्ट्रिंग में सामान्य चार अर्थात् यह बिल्कुल उसी वर्ण का उपयोग करता है, और कुछ और नहीं करता है %d , %f प्रमुख सफेद स्थान को छोड़ सकता है तो, इसे जमा करें, हमें मिला:

  • ए, यह वही है, क्योंकि %d प्रमुख स्थान को छोड़ देता है
  • बी, %d-%d-%d बहुत सख्त है, यह पूर्णांक के बाद एक पूर्णांक पढ़ता है - और फिर एक और पूर्णांक और इसी तरह, तो यह 1-2-3 अच्छी तरह से पढ़ता है, 1- 2- 3 अच्छी तरह से भी, लेकिन यह 1 - 2 - 3 पर विफल रहता है दूसरी तरफ, %d -%d -%d पहले स्थान को छोड़ दें, एक पूर्णांक पढ़ें, रिक्त स्थान छोड़ें, चार की अपेक्षा करें, फिर रिक्त स्थान छोड़ें, और इसी तरह ...
  • सी, अनुगामी रिक्त स्थान में अंतर नहीं है
  • डी, यह वही है, क्योंकि %f प्रमुख स्थानों को छोड़ भी है

तो उत्तर बी होगा।

इस सवाल का पहले से ही उत्तर दिया गया है:

मैं वर्तमान में पाठ्यपुस्तक के माध्यम से जाकर प्रोग्रामिंग स्कूल के लिए खुद को तैयार कर रहा हूं। यह विशेष प्रश्न है जो मुझे समझ में नहीं आता है और पाठ्यपुस्तक जवाब नहीं देते।

पुनश्च: मैंने कुछ सी ++ / सी # ऑनलाइन सीखा है, लेकिन कभी-कभी उचित-सिखाया प्रोग्रामिंग वर्गों के माध्यम से नहीं जाना है, इसलिए मैं कुछ अवधारणाओं के साथ संघर्ष कर रहा हूं।

प्रश्न: स्कैनएफ प्रारूप स्ट्रिंग के प्रत्येक निम्न जोड़े के लिए, संकेत दें कि दो स्ट्रिंग समान हैं या नहीं। यदि वे नहीं हैं, तो दिखाएं कि उन्हें कैसे अलग किया जा सकता है।

ए) "%d" बनाम " %d"
बी) "%d-%d-%d" बनाम "%d -%d -%d"
सी) "%f" बनाम "%f "
डी) "%f,%f" बनाम "%f, %f"

सबसे पहले, मुझे यह भी नहीं पता कि सवाल क्या पूछ रहा है। पाठ्य पुस्तक का अर्थ क्या है या नहीं, 2 स्ट्रिंग 'समतुल्य' हैं या नहीं?

यदि वे हैं, तो क्या कोई अंतर को समझा सकता है और संभवतः मुझे दिखा सकता है कि उन्हें कैसे अलग किया जा सकता है?


आइए पहले A कोशिश करें: "%d" बनाम " %d" , वे scanf() लिए समान स्वरूप स्ट्रिंग हैं।

" " निम्न कार्य करेगा यह विफल कभी नहीं होता है
1) स्कैन करें और छोड़ें (छोड़ें) वैकल्पिक सफेद-स्थान
2) एक गैर-सफेद-स्थान या अंत-की-फाइल पढ़ने के बाद, यदि नहीं (ईओएफ), तो पढ़े अंतिम वर्ण को stdin में वापस रखा जाता है।

"%d" ही 3 चीजों का प्रयास करेगा (यह विफल हो सकता है)
1) स्कैन करें और छोड़ें (छोड़ें) वैकल्पिक सफेद-स्थान
2) स्कैन और दशमलव पूर्णांक का प्रतिनिधित्व करने वाला संख्यात्मक पाठ परिवर्तित करें।
3) एक गैर-न्यूमेरिक टेक्स्ट या एंड-ऑफ-फाईल को पढ़ने के बाद, यदि नहीं (ईओएफ), पढ़ा गया अंतिम वर्ण stdin में वापस डाल दिया जाता है।

" %d" उपरोक्त दोनों करता है यह सिर्फ "%d" साथ दूसरा करने का एक ही परिणाम है

*scanf() विनिर्देशकों के साथ ध्यान दें:

श्वेत-स्पेस वर्णों को इनपुट करें (जैसा कि isspace समारोह द्वारा निर्दिष्ट किया गया है) छोड़ दिया जाता है, जब तक कि विनिर्देश में [ , c , या n निर्दिष्ट नहीं होता है। सी 11 §7.21.6.2 8

B , C , D मतभेद?

इशारा 1 के लिए माउस:

scanf() स्पेसिफायर के सामने एक " " , ऊपर वर्णित 3 को छोड़कर, इसके बिना स्कैन के बराबर स्कैन () प्रारूप है

संकेत 2 के लिए ऊपर माउस:

केवल 3 में से 1 समकक्ष

संकेत के लिए 3 पर माउस:

निविष्टियों पर विचार करें:
"123 -456-789"
"123.456 x" पढ़ा जाने वाला अगला चरित्र क्या है?

बी) "%d-%d-%d" बनाम "%d -%d -%d"
सी) "%f" बनाम "%f "
डी) "%f,%f" बनाम "%f, %f"

उत्तर:

Awww, क्या आप वास्तव में जवाब देना चाहते हैं?







scanf