2011-10-26 12 views
70

मुझे मिल गया है, जिसमें एक कोड का टुकड़ा नहीं है एकprintf में "%। * S" का क्या अर्थ है?

printf("%.*s\n") 

%.*s क्या मतलब है?

+20

अतिरिक्त तर्क के बिना की

s स्ट्रिंग, यह एक मान्य 'printf' कॉल नहीं है। –

उत्तर

75

आप चौड़ाई विनिर्देशक/परिशुद्धता printf() को, बल्कि यह प्रारूप स्ट्रिंग में कोडिंग मुश्किल से यानी

void f(const char *str, int str_len) 
{ 
    printf("%.*s\n", str_len, str); 
} 
+1

यह ध्यान दिया जाना चाहिए कि 'str_len' तर्क में' int' (या संकुचित अभिन्न प्रकार होना चाहिए, जिसे 'int' में प्रचारित किया जाएगा)। यह 'लांग', 'size_t', आदि –

+2

पास करने के लिए एक बग होगा, यह उल्लेखनीय है कि इस कोड का संभावित उद्देश्य, खासकर जब '% s' के साथ उपयोग किया जाता है, मूल स्ट्रिंग की उप-स्ट्रिंग मुद्रित करना है। इस उपयोग के मामले में, 'str' मूल स्ट्रिंग (संभवतः शुरुआत में) के अंदर कहीं भी इंगित करेगा, और' str_len' मुद्रित होने वाली उप-स्ट्रिंग की लंबाई निर्दिष्ट करेगा। –

11

पारित करने के लिए, तारांकित (*) का उपयोग कर सकते मैं कोड से ऊपर नहीं लगता कि सही है लेकिन (printf() इस विवरण के अनुसार) .* मतलब है

चौड़ाई प्रारूप स्ट्रिंग में निर्दिष्ट नहीं है, लेकिन तर्क है कि प्रारूप तैयार किया जाता करने के लिए पूर्ववर्ती एक अतिरिक्त पूर्णांक मान तर्क के रूप में। '

तो यह एक तर्क के रूप में एक पारगम चौड़ाई के साथ एक स्ट्रिंग है।

+2

मैंने यूआरएल क्रॉस-रेफरेंस जोड़ा है ताकि आप साहित्य चोरी के आरोपों से बच सकें। बेशक, सही उद्धरण कहते हैं, "_width_ नहीं है ..." के बजाय "_precision_ नहीं है ..."। –

+0

जैसा कि @MattMcNabb ने इंगित किया है, उस पृष्ठ के प्रत्येक संदर्भ को यह हाइलाइट करना चाहिए कि "* एक पूर्णांक मान *" बिल्कुल 'int' (या इसका सबसेट) है - न केवल किसी भी अभिन्न मूल्य जैसे अधिक सहज' size_t' या इसके संभावित उपनाम , जैसे 'std :: string :: size_type'। यह और भी भ्रमित है, इस बात को ध्यान में रखते हुए कि संदर्भित पृष्ठ 'size_t' को समर्थित प्रकार विनिर्देशकों में से एक के रूप में वर्णित करता है। –

9

देखें: http://www.cplusplus.com/reference/clibrary/cstdio/printf/

.* परिशुद्धता प्रारूप स्ट्रिंग में निर्दिष्ट नहीं है, लेकिन तर्क है कि प्रारूप तैयार किया जाता करने के लिए पूर्ववर्ती एक अतिरिक्त पूर्णांक मान तर्क के रूप में। पात्रों

संबंधित मुद्दे