सी में प्रिंटफ कथन डीकोडिंग (प्रिंटफ प्राइमर)

मैं 1 99 8 से 21 वीं शताब्दी तक कुछ पुराने कोड लाने पर काम कर रहा हूं। प्रक्रिया में पहले चरण में से एक printf कथन को QString चर। इससे कोई फर्क नहीं पड़ता कि मैं printf पर कितनी बार वापस देखता हूं, मैं हमेशा एक चीज़ या दूसरे को भूल जाता हूं। तो, मज़े के लिए, आइए 'समय के लिए और प्रक्रिया में, पहले स्टैक ओवरफ्लो के लिए पहले छोटे ' printf primer ' को बनाने के लिए इसे एक साथ डीकोड करें।

कोड में, मैं इस छोटे मणि भर में आया,

printf("%4u\t%016.1f\t%04X\t%02X\t%1c\t%1c\t%4s", a, b, c, d, e, f, g);

चर, ए, बी, सी, डी, ई, एफ, जी को कैसे स्वरूपित किया जाएगा?

0
ro fr bn

6 उत्तर

डैनी ज्यादातर सही है।

ए। हस्ताक्षरित दशमलव, न्यूनतम 4 वर्ण, स्थान गद्देदार
ख। फ़्लोटिंग पॉइंट, दशमलव से पहले 16 अंक (0 गद्देदार), दशमलव के बाद 1 अंक सी। हेक्स, न्यूनतम 4 वर्ण, 0 गद्दीदार, ऊपरी मामले में अक्षरों को मुद्रित किया जाता है
घ। उपर्युक्त के समान, लेकिन न्यूनतम 2 वर्ण
ई। ई को एक int माना जाता है, एक हस्ताक्षरित चार में परिवर्तित और मुद्रित
च। ई के समान ही जी। यह एक टाइपो की संभावना है, 4 का कोई प्रभाव नहीं है। यदि यह "% .4s" था, तो स्ट्रिंग से अधिकतम 4 वर्ण मुद्रित किए जाएंगे। यह ध्यान रखना दिलचस्प है कि इस मामले में, स्ट्रिंग को निरस्त करने की आवश्यकता नहीं है।

संपादित करें: jj33 बी और जी में 2 त्रुटियों को इंगित करता है यहां

0
जोड़ा
g के लिए, 4 का प्रभाव होता है: यदि स्ट्रिंग 4 वर्णों से कम है तो यह स्पेस-पैड (बायीं तरफ) होगी।
जोड़ा लेखक R.., स्रोत

@ jj33, आप दोनों गिनती पर बिल्कुल सही हैं।

#include 

int main(int argc, char *argv[]) {
    char *s = "Hello, World";
    char *s2 = "he";

    printf("4s: '%4s'\n", s);
    printf(".4s: '%.4s'\n", s);
    printf("4s2: '%4s'\n", s2);
    printf(".4s2: '%.4s'\n", s2);

    return 0;
}

$ gcc -o foo foo.c
$ ./foo
4s: 'Hello, World'
.4s: 'Hell'
4s2: '  he'
.4s2: 'he'

अच्छी पकड़!

0
जोड़ा

Here's my printf primer: http://www.pixelbeat.org/programming/gcc/format_specs.html

मैं हमेशा जीसीसी के साथ संकलित करता हूं आपूर्ति के बीच किसी भी विसंगति के बारे में चेतावनी दी जाएगी printf प्रारूप और चर।

0
जोड़ा
मैं यादृच्छिक रूप से इस प्राइमर महीने पहले आया था और तुरंत बुकमार्क किया गया था। मैंने तब से काफी कुछ उपयोग किया है। इसे एक साथ रखने के लिए समय लेने के लिए धन्यवाद!
जोड़ा लेखक SiegeX, स्रोत

ए। दशमलव, चार महत्वपूर्ण अंक

ख। निश्चित नहीं

सी। हेक्स, न्यूनतम 4 वर्ण

घ। हेक्स, न्यूनतम 2 अक्षर भी

ई। 1 चरित्र

च। पात्रों की स्ट्रिंग, न्यूनतम 4

0
जोड़ा

@ जेसन डे , मुझे लगता है कि अंतिम% में 4 यदि 4 से कम वर्ण हैं तो 4s महत्वपूर्ण है। यदि 4 से अधिक हैं तो आप सही हैं,% 4s और% s समान होंगे, लेकिन जी% s में 4 से कम वर्णों के साथ उचित छोड़ा जाएगा और% 4s 4 चार फ़ील्ड में सही-सही होंगे।

बी वास्तव में पूरे क्षेत्र के लिए न्यूनतम 16 वर्ण है, दशमलव के बाद दशमलव और एकल अंक सहित मुझे लगता है (16 कुल वर्ण बनाम 18 कुल वर्ण)

0
जोड़ा

आपको वास्तव में एक उपकरण की आवश्यकता है जो printf() कथन में प्रारूप स्ट्रिंग लेता है और उन्हें समकक्ष QString आधारित फ़ंक्शन कॉल में परिवर्तित करता है।
क्या कोई इस तरह के उपकरण को विकसित करने पर अपना फ्री सॉफ्टवेयर दान समय बिताना चाहता है?

ऐसे सॉफ़्टवेयर के स्रोत कोड को रखने वाले एक निःशुल्क सॉफ़्टवेयर होस्टिंग सेवा के लिए URL के लिए प्लेसहोल्डर

0
जोड़ा
या आप QString :: sprintf का उपयोग कर सकते हैं जो QString क्लास का हिस्सा है और "मानक C ++ लाइब्रेरी में printf() द्वारा प्रदान किए गए अधिकांश रूपांतरण विनिर्देशों का समर्थन करता है।"
जोड़ा लेखक David Dibben, स्रोत