printf रूपांतरण विनिर्देश% झंडे, चौड़ाई, परिशुद्धता, लंबाई संशोधक और रूपांतरण विनिर्देशक के बाद% हैं। क्या रूपांतरण विनिर्देश के आकार के लिए व्यावहारिक सीमा है?
मुझे कई मानक printf
कार्यान्वयन और मेरे सामान्य प्रभाव के साथ अतीत में सौदा करना पड़ा कि कोई विशेष सीमा लागू नहीं है।
स्वरूप स्ट्रिंग आमतौर पर चरित्र द्वारा वर्णित चरित्र है। (सरल FSM सोचें।) अधिकांश printf
कार्यान्वयन आंतरिक रूप से कुछ भी बफर करने से बचते हैं और यहां तक कि संख्याओं के लिए चार रूपांतरणों को चार रूपांतरणों से दशमलव तक उपयोग करते हैं (यहां तक कि atoi
भी नहीं)।
उदाहरण के लिए आप printf
को FreeBSD kernel (जहां कई अन्य कार्यान्वयनों से अक्सर कोड उठाते हैं) के अंदर लागू किया जा सकता है। यह निश्चित रूप से सरलीकृत कार्यान्वयन (जोड़े कर्नेल-विशिष्ट tweaks के साथ) है, फिर भी यह दर्शाता है कि स्वरूप स्ट्रिंग अक्सर कैसे संभाला जाता है।
एनबी।बस glibc के vfprintf()
कार्यान्वयन की जांच की गई है और वे malloc()
के साथ आंतरिक रूप से एक बफर (यदि आवश्यक हो) आवंटित करते हैं। तो न तो विशेष सीमा।
मेरा प्रश्न है, सी 99 मानक के अनुसार, प्रारूप स्ट्रिंग में अधिकतम एकल विनिर्देश की लंबाई क्या है?
स्वरूप विनिर्देशक मेरे ज्ञान के लिए एक स्ट्रिंग और स्ट्रिंग लंबाई का एक हिस्सा मानक द्वारा सीमित नहीं है। और जैसा कि मैंने ऊपर उल्लेख किया है, न ही मैंने कभी ऐसी किसी सीमा के साथ कार्यान्वयन देखा है।
आह मैं देखता हूं, आप प्रारूप स्ट्रिंग के एक प्रारूप प्रारूप विनिर्देश पर व्यावहारिक सीमाओं में रुचि रखते हैं। मैं तब अपना जवाब हटा देता हूं। –
मैं उत्सुक हूं - क्या जिज्ञासा के अलावा आप जानना चाहते हैं? – nategoose
@nategoose: मैं 'snprintf' के आस-पास एक बहुत ही विशेष रैपर पर विचार कर रहा हूं और यह समझना चाहता हूं कि क्या मैं कुछ अस्थायी बफर आवंटित कर सकता हूं – zaharpopov