writing formatted data of unknown length to a string (C programming) -


निम्नलिखित सी फ़ंक्शन:

  int sprintf (char * str, const char * format , ...);  

एक स्ट्रिंग में स्वरूपित डेटा लिखता है। Str के रूप में पारित सरणी का आकार पूरे स्वरूपित स्ट्रिंग को शामिल करने के लिए पर्याप्त होना चाहिए। हालांकि, क्या होगा अगर स्वरूपित स्ट्रिंग की लंबाई समय से पहले नहीं पता है? यह फ़ंक्शन (या ऐसा कोई अन्य फ़ंक्शन) किस प्रकार लिखा हुआ स्वरूपित डेटा हो सकता है, जिसकी लम्बाई अज्ञात है?

उदाहरण के लिए:

  #include & lt; stdio ज & gt; Int main () {चार बफर [13]; Int n, a = 5, b = 3; N = sprintf (बफर, "% d प्लस% d है% d", a, b, a + b); Printf ("[% s] एक% d वर्ण लंबा स्ट्रिंग है \ n", बफ़र, एन); वापसी 0; }  

इस बफर को काम करने के लिए 13 या अधिक होने की आवश्यकता है यदि स्ट्रिंग की लंबाई अज्ञात थी, और बफर, उदाहरण के लिए 5 के लिए सेट किया गया है, यह काम नहीं करेगा मुझे ऐसी कोई आवश्यकता है जो बफर से बड़ा होने वाले तारों के लिए गतिशील रूप से बफर को आवंटित या पुन: निर्दिष्ट कर सकता है।

आप क्या चाहते हैं इन दो कार्यों में से एक है: * snprintf () । यह आउटपुट बफर की दूसरी तर्क के रूप में लेता है, और अगर बफर परिणाम के लिए बहुत छोटा है तो यह आवश्यक वर्णों की संख्या को वापस देगा, जिससे आप एक बड़े बफर को पुनः लोड कर सकेंगे। * asprintf । यह एक चार ** तर्क लेता है और आउटपुट को रखने के लिए पर्याप्त मेमोरी को आवंटित करता है, जब तक कि बहुत से आभासी स्मृति उपलब्ध नहीं है यदि आपको प्रोग्राम से बाहर निकलने से पहले इसके साथ किया गया है और कुछ और के लिए मेमोरी की आवश्यकता हो तो आपको इसे मुफ़्त कॉल करने के लिए स्मृति से निकालना होगा।


Comments

Popular posts from this blog

c# - How to capture HTTP packet with SharpPcap -

php - Multiple Select with Explode: only returns the word "Array" -

jquery - SimpleModal Confirm fails to submit form -