printf

2011-08-18 16 views
41

में परिवर्तनीय टेक्स्ट कॉलम चौड़ाई सेट करें सी भाषा में कॉलम के आकार को निर्धारित करने के लिए हम %<number>d का उपयोग करते हैं। उदाहरण के लिए, मैं %3d टाइप कर सकता हूं और यह मुझे चौड़ाई = 3 का कॉलम देगा। मेरी समस्या यह है कि % के बाद मेरा नंबर एक चर है जो मुझे प्राप्त होता है, इसलिए मुझे %xd जैसे कुछ चाहिए (जहां x मेरे प्रोग्राम में कुछ समय पहले पूर्णांक चर है)। लेकिन यह काम नहीं कर रहा है।printf

क्या ऐसा करने का कोई और तरीका है?

+3

सामान्य तौर पर, के बजाय "काम नहीं कर रहा" आप चाहिए सटीक त्रुटि संदेश कॉपी-पेस्ट आप प्राप्त किया। –

उत्तर

64

आप इस प्रकार कर सकते हैं:

ली की टिप्पणी से:
तुम भी सटीक आकार के लिए एक * का उपयोग कर सकते हैं:

printf("%*.*f", width, precision, value); 
+11

आप सटीक आकार के लिए * का उपयोग भी कर सकते हैं: 'printf ('% *। * F', चौड़ाई, परिशुद्धता, मान);' –

+0

कूल, उस निर्माण को नहीं पता था! –

+0

यह '% * d" ' –

5

बस पूर्णता के लिए, कि उल्लेख करना चाहता था printf() के पॉज़िक्स-अनुपालन संस्करणों के साथ आप पैरामीटर सूची में कहीं और वास्तविक फ़ील्ड चौड़ाई (या परिशुद्धता) मान भी डाल सकते हैं और इसे 1-आधारित पैरामीटर नंबर का उपयोग करके डॉलर संकेत के बाद देखें:

एक फील्ड चौड़ाई या परिशुद्धता, या दोनों, तारांकन '*' या तारांकन द्वारा इंगित किया जा सकता है जिसके बाद एक या अधिक दशमलव अंक और अंकों की स्ट्रिंग के बजाय '$' होता है। इस मामले में, एक int तर्क फ़ील्ड चौड़ाई या परिशुद्धता की आपूर्ति करता है। एक नकारात्मक फ़ील्ड चौड़ाई को बाएं समायोजन ध्वज के रूप में माना जाता है जिसके बाद सकारात्मक क्षेत्र चौड़ाई होती है; एक नकारात्मक परिशुद्धता का इलाज किया जाता है जैसे कि यह गायब था। यदि एक एकल प्रारूप निर्देश स्थितित्मक (एनएन $) और गैर-स्थितित्मक तर्कों को मिश्रित करता है, तो परिणाम अपरिभाषित होते हैं।

जैसे, printf ("%1$*d", width, value);

+1

आपका उदाहरण भाषा में फिट नहीं है। यह '% * 1 $ d" ' –

+0

होना चाहिए इसके अलावा, आपको' n $ 'के माध्यम से दोनों तर्क निर्दिष्ट करना चाहिए: 'printf ("% 2 $ * 1 $ d ", चौड़ाई, मान);' । –