2011-05-24 12 views
26

के साथ पैडिंग मेरे पास एक डमी सवाल है। मैं 0 के साथ एक बफर पैडिंग में एक पूर्णांक मुद्रित करना चाहता हूं लेकिन मैं sprintf प्रारूप को सॉर्ट नहीं कर सकता। मैं निम्न स्ट्रिंगsprintf

"000000000000000000000000000324" 

क्या मैं गलत कर रहा हूँ है की उम्मीद कर निम्नलिखित

char buf[31]; 
int my_val = 324; 
sprintf(buf, "%d030", my_val); 

कोशिश कर रहा हूँ? इसका मतलब 30 वर्णों की अधिकतम चौड़ाई के लिए 0 के साथ पैड नहीं है?

उत्तर

52

"%030d" ड्रायड आप

+8

मुझे मुस्कान करना पड़ा: डी – jwueller

+2

"जो ड्रॉइड आप खोज रहे हैं वे मैन्युअल में हैं। उन्हें चौड़ाई और सटीक कहा जाता है।" :-) – Jens

5

प्रयास करें:

sprintf(buf, "%030d", my_val); 
+2

आप शायद पहले से ही इस पता है, लेकिन 'का उपयोग कर snprintf' शैली कार्यों जहां बफर लंबाई निर्दिष्ट खुद को पाने के लिए एक अच्छी आदत है में, क्योंकि यह बफर ओवरफ्लो को रोकने में मदद करता है। – Matthew

7

गद्दी के लिए देख रहे है और चौड़ाई से पहले आ प्रकार निर्दिष्टकर्ता:

sprintf(buf, "%030d", my_val); 
1

यह %030d है, type- साथ अंत में पत्र।

2

आपके परिशुद्धता और चौड़ाई मानकों को '%' और रूपांतरण विनिर्देशक 'डी' के बीच जाने की आवश्यकता है, इसके बाद नहीं। वास्तव में सभी झंडे करते हैं। तो यदि आप सकारात्मक संख्याओं के लिए '+' पूर्ववर्ती करना चाहते हैं, तो '% + d' का उपयोग करें।

6

आपको वाक्यविन्यास थोड़ा गलत मिला है;

char buf[31]; 
int my_val = 324; 
sprintf(buf, "%030d", (int)my_val); 

से Wikipedia's Article on Printf:: निम्नलिखित कोड वांछित आउटपुट का उत्पादन

[...] printf("%2d", 3) results in " 3", while printf("%02d", 3) results in "03". 
+1

आपको 'my_val' को 'int' पर क्यों डालना होगा जब यह पहले से ही 'int' हो? – mc10

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