2015-06-23 11 views
6

का उपयोग sprintf और सामान्य वाक्य रचना "%A.B" का उपयोग कर मैं यह कर सकता:परिशुद्धता सेट गतिशील sprintf

double a = 0.0000005l; 
char myNumber[50]; 
sprintf(myNumber,"%.2lf",a); 

मैं प्रारूप स्ट्रिंग में गतिशील रूप से ए और बी सेट कर सकते हैं?

+1

देखें हाँ तुम, उदाहरण के लिए देख सकते हैं [यह 'printf' (और परिवार) संदर्भ] (http://en.cppreference.com/w/c/io/fprintf)। –

+1

वैकल्पिक रूप से, प्रारूप स्ट्रिंग को भी स्पिंटफ के लिए एक और कॉल के साथ बनाया जा सकता है। – Lundin

उत्तर

9

हाँ, आप यह कर सकते हैं। आपको परिशुद्धता के रूप में क्षेत्र चौड़ाई और .* के रूप में तारांकन * का उपयोग करने की आवश्यकता है। फिर, आपको मूल्यों को ले जाने वाले तर्कों की आपूर्ति करने की आवश्यकता है। जैसे

sprintf(myNumber,"%*.*lf",A,B,a); 

नोट कुछ: A और B प्रकार int की जरूरत है। C11 मानक, अध्याय §7.21.6.1, fprintf() समारोह

... एक क्षेत्र चौड़ाई, या सटीक, या दोनों से, एक तारांकन द्वारा इंगित किया जा सकता है। में इस मामले में, int तर्क फ़ील्ड चौड़ाई या परिशुद्धता प्रदान करता है। क्षेत्र चौड़ाई, या परिशुद्धता, या दोनों निर्दिष्ट करने वाले तर्क, तर्क (यदि कोई हो) को परिवर्तित करने से पहले (उस क्रम में) दिखाई देंगे। एक नकारात्मक फ़ील्ड चौड़ाई तर्क - ध्वज के रूप में लिया जाता है जिसके बाद सकारात्मक फ़ील्ड चौड़ाई होती है। एक नकारात्मक सटीक तर्क लिया जाता है जैसे परिशुद्धता छोड़ी गई थी।

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