Monday 15 July 2013

Language C formatted string without printf -


यही है जो मुझे चाहिए:

  char * getHour () {वापसी ("% D:% d:% d ", घंटा, मिनट, सेकंड); }   

इस तरह से एक स्ट्रिंग लौटें "hh: mm: ss" मैं यह कैसे कर सकता हूँ?

मैं आपको यह करने का एक अच्छा कारण बताऊंगा। यहां कोड है जिसे आप ढूंढ रहे हैं:

  चार * getHourMinuteSecond (इंट घंटा, इंट मिनट, इंट सेकेंड) {जोर (घंटा & gt; = 0 & amp; घंटे & lt; 24); जोर (मिनट & gt; = 0 & amp; amp; मिनट & amp; amp; मिनट & lt; 60); जोर देना (दूसरा & gt; = 0 & amp; amp; सेकंड & lt; = 60); // छलांग सेकंड ... शायद चार * आउटपुट = (चार *) मॉलोक (9 * आकार (चार)); अगर (आउटपुट == नल) {वापसी नल; } आउटपुट [0] = (चार) ((घंटा / 10) + '0'); आउटपुट [1] = (चार) ((घंटा% 10) + '0'); आउटपुट [2] = ':'; आउटपुट [3] = (चार) ((मिनट / 10) + '0'); आउटपुट [4] = (चार) ((मिनट% 10) + '0'); आउटपुट [5] = ':'; आउटपुट [6] = (चार) ((दूसरा / 10) + '0'); आउटपुट [7] = (चार) ((दूसरा% 10) + '0'); आउटपुट [8] = '\ 0'; वापसी आउटपुट; }   

अब एक छोटे से saner कुछ करने के लिए प्रतिबंध आराम देता है। हम snprintf का उपयोग कर सकते हैं: <पूर्व> चार * getHourMinuteSecond (इंट घंटे, इंट मिनट, इंट सेक) {जोर (घंटे> gt; = 0 & amp; hour & lt; 24); जोर (मिनट & gt; = 0 & amp; amp; मिनट & amp; amp; मिनट & lt; 60); जोर देना (दूसरा & gt; = 0 & amp; amp; सेकंड & lt; = 60); // छलांग सेकंड ... शायद चार * आउटपुट = (चार *) मॉलोक (9 * आकार (चार)); अगर (आउटपुट == नल) {वापसी नल; } Snprintf (आउटपुट, 9, "% 02d:% 02d:% 02d", घंटा, मिनट, सेकंड); वापसी आउटपुट; }

अब भी saner प्राप्त करें, और एक पैरामीटर के माध्यम से समारोह वापसी है (ताकि हमें malloc के साथ खेलने की आवश्यकता नहीं है): <पूर्व> शून्य getHourMinuteSecond (चार लक्ष्य [9], int घंटे, int मिनट, int सेकंड) {जोर (लक्ष्य! = नल); जोर (घंटा & gt; = 0 & amp; amp; घंटे & amp; amp; घंटे; 24;); जोर (मिनट & gt; = 0 & amp; amp; मिनट & amp; amp; मिनट & lt; 60); जोर देना (दूसरा & gt; = 0 & amp; amp; सेकंड & lt; = 60); // छलांग सेकंड ... शायद snprintf (लक्ष्य, 9, "% 02d:% 02d:% 02d", घंटा, मिनट, सेकंड); }

रुको, उस अंतिम फ़ंक्शन में ज्यादातर त्रुटि जांच थी हम फिर से मूर्खता प्राप्त कर सकते हैं और एक #define :

  #define getHourMinuteSecond (tgt, h, m, s) snprintf (tgt, 9, "% 02d: अंत में, अपने मूल कोड में, आप  hour ,  मिनट नहीं लेते ,  minute   

/ Code> या दूसरे पैरामीटर के रूप में, तो क्या आप उन्हें निर्धारित करने के लिए फ़ंक्शन चाहते हैं?

  शून्य getHourMinuteSecond (चार लक्ष्य [9]) {assert (target! शून्य ); Const time_t अब = समय (0); Const tm * const tmnow = स्थानीय समय (और अब); Snprintf (लक्ष्य, 9, "% 02d:% 02d:% 02d", tmnow-> gt; tm_hour, tmnow- & gt; tm_min, tmnow- & gt; tm_sec); }    

No comments:

Post a Comment