दिलचस्प पोस्ट
XMLHttpRequest का उपयोग करके डाक डेटा भेजें PHP / Perl के माध्यम से उपयोगकर्ता ब्राउज़र में पीडीएफ फाइलें दिखाएं $ की डिफरेड की एक सरणी में पास करें। जब () क्या मैंगोडब मेमोरी उपयोग को सीमित करने का कोई विकल्प है? सी में, मुझे एक टेक्स्ट फ़ाइल कैसे पढ़नी चाहिए और सभी स्ट्रिंग प्रिंट करना चाहिए डिफ़ॉल्ट जावा वर्ण एन्कोडिंग सेट करना? कैसे ठीक से jsPDF पुस्तकालय का उपयोग करें सरल VBA कोड मुझे समय त्रुटि चलाने के लिए देता है 91 वस्तु चर या ब्लॉक सेट के साथ नहीं कैसे mongodb में वस्तु की सरणी में खोजना एप्लिकेशन फ़ोल्डर पथ प्राप्त करने का सर्वोत्तम तरीका आपका पासवर्ड नमस्कार: सर्वोत्तम व्यवहार? स्विफ्ट 3 आईओएस – कैसे यूआईटीएपीजस्टाइनरेक्टर को ट्रिगर करें क्यों `एक == बी या सी या डी 'हमेशा सही पर मूल्यांकन करता है? मैं दो किंवदंतियों को जीजीप्लोट में स्वतंत्र रूप से कैसे स्थापित कर सकता हूं लक्ष्य 'एंड्रॉइड -16' को हल करने में असमर्थ

मुझे ऑफ_ टी और साइज़_टी जैसे प्रकारों को कैसे प्रिंट करना चाहिए?

मैं off_t और size_t जैसे प्रकारों को मुद्रित करने की कोशिश कर रहा हूं printf() लिए सही प्लेसहोल्डर क्या है जो पोर्टेबल है ?

या उन चर को मुद्रित करने के लिए एक पूरी तरह से अलग तरीका है?

Solutions Collecting From Web of "मुझे ऑफ_ टी और साइज़_टी जैसे प्रकारों को कैसे प्रिंट करना चाहिए?"

आप के लिए size_t और t लिए z उपयोग कर सकते हैं जैसे ptrdiff_t

 printf("%zu %zd", size, ptrdiff); 

लेकिन मेरे मॅनपेज का कहना है कि कुछ पुरानी लाइब्रेरी ने ज़्यादा से ज़्यादा एक अलग चरित्र का इस्तेमाल किया और इसके उपयोग को हतोत्साहित किया। फिर भी, यह मानकीकृत है (C99 मानक द्वारा) उन intmax_t और stdint.h int8_t और इतने पर, मैक्रोज़ हैं जो आप उपयोग कर सकते हैं, जैसे कि एक अन्य उत्तर ने कहा:

 printf("value: %" PRId32, some_int32_t); printf("value: %" PRIu16, some_uint16_t); 

वे inttypes.h के inttypes.h में सूचीबद्ध हैं

निजी तौर पर, मैं सिर्फ unsigned long या long unsigned long लिए मूल्यों को unsigned long ही पसंद करता हूं जैसे अन्य उत्तर की सिफारिश की जाती है यदि आप C99 का उपयोग करते हैं, तो आप (और निश्चित तौर पर) unsigned long long या long long और क्रमशः %llu या %lld प्रारूप का उपयोग कर सकते हैं।

off_t को प्रिंट करने के लिए:

 printf("%jd\n", (intmax_t)x); 

size_t प्रिंट करने के लिए:

 printf("%zu\n", x); 

ssize_t प्रिंट करने के लिए:

 printf("%zd\n", x); 

C99 मानक में 7.1 9.6.1/7 देखें, या अधिक सुविधाजनक कोडिंग के पॉसिक्स प्रलेखन:

http://pubs.opengroup.org/onlinepubs/009695399/functions/fprintf.html

यदि आपका कार्यान्वयन उन फ़ॉर्मेटिंग कोडों का समर्थन नहीं करता है (उदाहरण के लिए, क्योंकि आप C89 पर हैं), तो AFAIK के बाद से आपको एक समस्या का थोड़ा सा है, C89 में पूर्णांक प्रकार नहीं हैं, जो कि फ़ॉर्मेटिंग कोड हैं और इनकी बड़ी गारंटी है इस प्रकार के रूप में तो आपको कार्यान्वयन-विशिष्ट कुछ करने की ज़रूरत है

उदाहरण के लिए यदि आपका कंपाइलर long long और आपका मानक पुस्तकालय %lld का समर्थन करता है, तो आप विश्वास कर सकते हैं कि यह intmax_t स्थान पर काम intmax_t । लेकिन अगर ऐसा नहीं है, तो आपको long गिरना होगा, जो कुछ अन्य कार्यान्वयनों पर विफल हो सकता है क्योंकि यह बहुत छोटा है

माइक्रोसॉफ्ट के लिए, जवाब अलग है VS2013 काफी हद तक C99 अनुरूप है लेकिन "[टी] वह एचएच, जे, जेड, और टी लंबाई उपसर्ग समर्थित नहीं हैं।" आकार_टी "के लिए, जो 32-बिट प्लेटफॉर्म पर हस्ताक्षरित __int32, 64-बिट प्लेटफॉर्म पर अहस्ताक्षरित __int64" प्रकार विनिर्देशक ओ, यू, एक्स या एक्स के साथ उपसर्ग I (पूंजी आंख) का उपयोग करें। वीएस2013 आकार विनिर्देश देखें

ऑफ_टी के लिए, इसे लंबे समय तक वीसी \ में \ sys \ types.h में परिभाषित किया जाता है।

सी का कौन सा संस्करण आप उपयोग कर रहे हैं?

सी 90 में, मानक अभ्यास हस्ताक्षरित या अहस्ताक्षरित लंबे, उचित रूप में, और तदनुसार प्रिंट करने के लिए डाली है। मैंने size_t के लिए% z को देखा है, लेकिन Harbison और Steele इसे printf () के तहत नहीं बताते हैं, और किसी भी मामले में जो आपको ptrdiff_t या जो भी मदद नहीं करेगा

सी 99 में, विभिन्न _t प्रकार अपने स्वयं के प्रिंटफ़ मैक्रोज़ के साथ आते हैं, इसलिए "Size is " FOO " bytes." जैसी कुछ "Size is " FOO " bytes." मुझे विवरण नहीं पता है, लेकिन यह एक बहुत बड़ी संख्यात्मक प्रारूप का हिस्सा है जिसमें फाइल शामिल है

आप inttypes.h से फ़ॉर्मेटिंग मैक्रोज़ का उपयोग करना चाहेंगे।

यह प्रश्न देखें: प्रकार आकार के चर के लिए क्रॉस प्लेटफ़ॉर्म प्रारूप स्ट्रिंग?

लिनक्स, ओएस एक्स, और ओपनबीएसडी पर man 3 printf ptrdiff_t को ptrdiff_t सभी आकार में %z लिए size_t और ptrdiff_t ( ptrdiff_t लिए) %t लिए समर्थन दिखाया गया है, लेकिन उनमें से कोई भी off_t उल्लेख नहीं off_t जंगली में सुझाव आमतौर पर off_t लिए %u रूपांतरण प्रदान off_t , जो कि "सही पर्याप्त" है, जहां तक ​​मैं बता सकता हूं (दोनों unsigned int और off_t 64-बिट और 32-बिट सिस्टम के बीच समान रूप से भिन्न होते हैं)।

मैंने इस पोस्ट को कम से कम दो बार देखा, क्योंकि स्वीकृत जवाब मेरे लिए याद दिलाना मुश्किल है (मैं शायद ही कभी z या j झंडे का उपयोग करता है और वे प्लेटफॉर्म को स्वतंत्र नहीं मानते हैं)।

मानक कभी भी स्पष्ट रूप से size_t की सटीक डेटा लंबाई नहीं बताता है, इसलिए मेरा सुझाव है कि आपको पहले अपने प्लेटफार्म पर लम्बाई आकार की size_t चाहिए, फिर उनमें से एक चुनें:

 if sizeof(size_t) == 4 use PRIu32 if sizeof(size_t) == 8 use PRIu64 

और मैं सलाह देता हूं कि stdint के लिए कच्चे डेटा प्रकार के बजाय stdint प्रकार का उपयोग करें।

मुझे याद है, यह करने के लिए एकमात्र पोर्टेबल तरीका है, परिणाम को "अहस्ताक्षरित लंबे अंतराल" में डालना और %lu उपयोग करना।

 printf("sizeof(int) = %lu", (unsigned long) sizeof(int)); 

कृपया% lu का उपयोग करें ऑफ_ट लंबे समय से हस्ताक्षर नहीं किया गया है।

off_t के लिए "% zo" का उपयोग करें (अष्टक) या "% zu" दशमलव के लिए