लक्ष्य: जेएसओएन को डेटा क्रमबद्ध करें।sprintf उत्पन्न होने वाले आउटपुट की लंबाई की गणना कैसे करें?
अंक: मैं पहले से नहीं जानता कि पूर्णांक कितने अक्षर लंबे हैं।
मैं का उपयोग कर sprintf()
size_t length = sprintf(no_buff, "{data:%d}",12312);
char *buff = malloc(length);
snprintf(buff, length, "{data:%d}",12312);
//buff is passed on ...
बेशक
मैं char a[256]
बजाय no_buff
की तरह एक ढेर चर का उपयोग कर सकते हैं द्वारा सोचा है यह करने के लिए एक अच्छा तरीका है।
प्रश्न: लेकिन क्या सी में यूसी /dev/null
जैसे डिस्पोजेबल लिखने के लिए उपयोगिता है? Smth इस तरह:
#define FORGET_ABOUT_THIS ...
size_t length = sprintf(FORGET_ABOUT_THIS, "{data:%d}",12312);
पी.एस. मुझे पता है कि मैं लॉग के माध्यम से पूर्णांक की लंबाई भी प्राप्त कर सकता हूं लेकिन यह तरीके अच्छे लगते हैं।
लंबाई को काम करने के लिए http://stackoverflow.com/questions/1068849/how-do-i-determine-the-number-of-digits-of-an-integer-in-c –
संभावित डुप्लिकेट [ स्प्रिंटफ बफर आकार निर्धारित करना - मानक क्या है?] (Http://stackoverflow.com/questions/3919995/determining-sprintf-buffer-size-whats-the- standard) –