string streams पर जीएनयू प्रलेखन के माध्यम से पढ़ते समय मैं दो समान कार्य है कि बहुत समान काम करते पाया:fmemopen और open_memstream के बीच क्या अंतर है?
FILE * fmemopen (void *buf, size_t size, const char *opentype)
FILE * open_memstream (char **ptr, size_t *sizeloc)
प्रलेखन पढ़ने से, यह open_memstream
इनपुट के लिए एक आउटपुट स्ट्रीम और fmemopen
खोलने के लिए इस्तेमाल किया जाना चाहिए लगता है। मुझे क्या पकड़ता है opentype
तर्क है कि आप fmemopen
पर जा सकते हैं।
linux manpage explains:
buf शून्य के रूप में निर्दिष्ट किया जाता है, तो fmemopen() गतिशील रूप से एक बफर आकार आवंटित लंबे बाइट्स। यह एक ऐसे अनुप्रयोग के लिए उपयोगी है जो अस्थायी बफर को डेटा लिखने के लिए चाहता है और फिर इसे फिर से पढ़ें। स्ट्रीम बंद होने पर बफर स्वचालित रूप से मुक्त हो जाता है। ध्यान दें कि कॉलर के पास इस कॉल द्वारा आवंटित अस्थायी बफर पर पॉइंटर प्राप्त करने का कोई तरीका नहीं है (लेकिन नीचे open_memstream() देखें)।
तो क्या open_memstream
fmemopen
यदि का उपयोग कर एक इनपुट/आउटपुट धारा खोलने संभाल कर सकते हैं की बात हो सकता है?
आह, मैं देख रहा हूँ। अच्छी अंतर्दृष्टि, fmemopen के लिए मैन पेज में स्पष्ट रूप से कहा नहीं गया है लेकिन अब मुझे लगता है कि यह निहित है। –