सी ++ स्निपरफ () - सी ++ स्टैंडर्ड लाइब्रेरी

C ++ में Snprintf () फ़ंक्शन का उपयोग वर्ण स्ट्रिंग बफ़र के लिए स्वरूपित स्ट्रिंग लिखने के लिए किया जाता है।

स्प्रिंटफ () के विपरीत, बफर को लिखे जाने वाले अधिकतम वर्णों में निर्दिष्ट किया गया है snprintf()

snprintf () प्रोटोटाइप

 int snprintf (char * बफर, size_t buf_size, const char * format,…);

snprintf()समारोह स्ट्रिंग प्रारूप बफ़र होना द्वारा की ओर इशारा किया लिखता है। लिखे जा सकने वाले वर्णों की अधिकतम संख्या है (buf_size-1)

वर्ण लिखे जाने के बाद, एक समाप्ति शून्य वर्ण जोड़ा जाता है। यदि buf_size शून्य के बराबर है, तो कुछ भी नहीं लिखा गया है और बफर एक शून्य सूचक हो सकता है।

इसे हेडर फ़ाइल में परिभाषित किया गया है।

snprintf () पैरामीटर

  • बफर: परिणाम लिखने के लिए स्ट्रिंग बफर को इंगित करें।
  • buf_size: बफर में लिखे जाने वाले वर्णों की अधिकतम संख्या निर्दिष्ट करें जो buf_size-1 है।
  • प्रारूप: एक शून्य समाप्त स्ट्रिंग को इंगित करता है जो फ़ाइल स्ट्रीम में लिखा जाता है। इसमें% के साथ शुरू होने वाले वैकल्पिक प्रारूप विनिर्देशक के साथ वर्ण शामिल हैं।

    प्रारूप निर्दिष्टकर्ता संबंधित स्ट्रिंग के मानों द्वारा प्रतिस्थापित किए जाते हैं जो प्रारूप स्ट्रिंग का अनुसरण करते हैं।

    प्रारूप विनिर्देशक के निम्नलिखित भाग होते हैं:

    • एक अग्रणी% चिन्ह
    • झंडे: वैकल्पिक एक या अधिक झंडे जो रूपांतरण व्यवहार को संशोधित करते हैं।
      • - - वाम क्षेत्र के भीतर परिणाम को सही ठहराते हैं। डिफ़ॉल्ट रूप से यह सही है।
      • +: परिणाम का संकेत मूल्य की शुरुआत से जुड़ा है, यहां तक ​​कि सकारात्मक परिणामों के लिए भी।
      • अंतरिक्ष: यदि कोई संकेत नहीं है, तो परिणाम की शुरुआत के लिए एक स्थान जुड़ा हुआ है।
      • #: रूपांतरण का एक वैकल्पिक रूप प्रदर्शन किया जाता है।
      • 0: इसका उपयोग पूर्णांक और फ्लोटिंग पॉइंट संख्या के लिए किया जाता है। अंतरिक्ष के बजाय संख्याओं को पैड करने के लिए अग्रणी शून्य का उपयोग किया जाता है।
    • चौड़ाई: न्यूनतम चौड़ाई क्षेत्र को निर्दिष्ट करने के लिए उपयोग किया गया एक वैकल्पिक * या पूर्णांक मान।
    • परिशुद्धता: एक वैकल्पिक क्षेत्र जिसमें एक है। परिशुद्धता को निर्दिष्ट करने के लिए * या पूर्णांक या कुछ भी नहीं है।
    • लंबाई: एक वैकल्पिक लंबाई संशोधक जो तर्क के आकार को निर्दिष्ट करता है।
    • विनिर्देशक: रूपांतरण प्रारूप निर्दिष्ट करता है। उपलब्ध प्रारूप विनिर्देशक इस प्रकार हैं:
      प्रारूप विनिर्देशक विवरण
      % प्रिंट%
      सी एकल चरित्र लिखता है
      एस एक चरित्र स्ट्रिंग लिखता है
      d या i दशमलव प्रतिनिधित्व के लिए एक हस्ताक्षरित पूर्णांक बदलता है
      एक अहस्ताक्षरित पूर्णांक को अष्टक प्रतिनिधित्व में परिवर्तित करता है
      एक्स या एक्स एक अहस्ताक्षरित पूर्णांक को हेक्साडेसिमल प्रतिनिधित्व में परिवर्तित करता है
      यू एक अहस्ताक्षरित पूर्णांक को दशमलव प्रतिनिधित्व में परिवर्तित करता है
      च या च दशमलव प्रतिनिधित्व के लिए फ़्लोटिंग-पॉइंट संख्या को कनवर्ट करता है
      ई या ई दशमलव प्रतिपादक अंकन के लिए फ्लोटिंग-पॉइंट संख्या को परिवर्तित करता है
      ए या ए हेक्साडेसिमल एक्सपोनेंट के लिए फ्लोटिंग-पॉइंट नंबर को परिवर्तित करता है
      जी या जी फ़्लोटिंग-पॉइंट नंबर को या तो दशमलव या दशमलव घातांक संकेतन में परिवर्तित करता है
      एन इस कॉल द्वारा फ़ंक्शन में अब तक लिखे गए वर्णों की संख्या लौटाता है। परिणाम तर्क द्वारा इंगित मूल्य को लिखा जाता है
      पी एक सूचक को परिभाषित करते हुए एक कार्यान्वयन परिभाषित वर्ण अनुक्रम लिखता है।

      तो प्रारूप विनिर्देशक का सामान्य प्रारूप है: %(flags)(width)(.precision)(length)specifier

  • …: डेटा को निर्दिष्ट करने वाले अन्य अतिरिक्त तर्क मुद्रित किए जाते हैं। वे प्रारूप विनिर्देशक के अनुसार एक क्रम में होते हैं।

snprintf () रिटर्न वैल्यू

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

आउटपुट को पूरी तरह से लिखा गया माना जाता है यदि और केवल यदि लौटाया गया मूल्य nonggative है और buf_size से कम है।

उदाहरण: कैसे snprintf () फ़ंक्शन काम करता है

 #include #include using namespace std; int main() ( char buffer(100); int retVal, buf_size = 100; char name() = "Max"; int age = 23; retVal = snprintf(buffer, buf_size, "Hi, I am %s and I am %d years old", name, age); if (retVal> 0 && retVal < buf_size) ( cout << buffer << endl; cout << "Number of characters written = " << retVal << endl; ) else cout << "Error writing to buffer" << endl; return 0; )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 नमस्ते, मैं मैक्स हूं और मैं 23 साल का हूं चरित्रों की संख्या = 34 लिखी गई है

दिलचस्प लेख...