का उपयोग किए बिना एक नंबर मुद्रण यह संभव मुद्रित करने के लिए है (stdout
लिए, या एक फ़ाइल) एक नंबर (int
, float
, double
, long
, आदि) वास्तव में *printf
कार्य (printf
, fprintf
में से किसी का उपयोग किए बिना, sprintf
, snprintf
, vsprintf
, ...)?* printf
* printf
उत्तर
अपने libc एक itoa()
समारोह में शामिल है, तो आप इसे उपयोग कर सकते हैं एक स्ट्रिंग के लिए एक पूर्णांक कन्वर्ट करने के लिए।
नहीं तो आप एक स्ट्रिंग अपने आप से एक नंबर परिवर्तित करने के लिए कोड लिखने के लिए होगा।
itoa()
कार्यान्वयन C Programming Language, 2nd Edition - Kernighan and Ritchie से पेज 64:
/* itoa: convert n to characters in s */
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0) /* record sign */
n = -n; /* make n positive */
i = 0;
do { /* generate digits in reverse order */
s[i++] = n % 10 + '0'; /* get next digit */
} while ((n /= 10) > 0); /* delete it */
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
ओपी को पता होना चाहिए कि यह लिनक्स पर मौजूद नहीं है। यदि वह के एंड आर को धूलता है और पृष्ठ 56 पर जाता है, तो उसे एक कार्यान्वयन दिखाई देगा। –
अच्छा विचार है, और itoa को लागू करने के लिए भी मुश्किल नहीं है या तो: http://codepad.org/fUlU6thO – hiobs
ओह, यहां तक कि कश्मीर एंड आर INT_MIN .. – lowq
सीधे शब्दों में लिखें() फ़ंक्शन का उपयोग और उत्पादन खुद को फ़ॉर्मेट।
खैर, पूर्णांकों के लिए ऐसा करने के लिए, लेकिन काम चल बिन्दु संख्या के लिए एक निष्पक्ष थोड़ा और अधिक जटिल है, और किसी को पहले से ही उस के लिए एक स्पष्टीकरण के लिए सूचक पोस्ट किया गया है इसकी मुश्किल नहीं। पूर्णांक के लिए, आप कुछ इस तरह कर सकते हैं:
void iprint(int n)
{
if(n > 9)
{ int a = n/10;
n -= 10 * a;
iprint(a);
}
putchar('0'+n);
}
मैं ज्यादातर लोगों कि इस प्रश्न के पार चलो क्योंकि वे अपने स्वयं धारावाहिक tx कार्यों लिखा है और कुछ संख्या मुद्रित करने के लिए की जरूरत है मान। आपको अपने सेटअप के साथ फिट करने के लिए पुट कॉल को संशोधित करने की आवश्यकता होगी।
void print_int(int num)
{
if (num < 0)
{
putc('-');
num = -num;
}
else if (num == 0)
{
putc('0');
return;
}
while (num != 0)
{
putc ('0'+ (num%10));
num /= 10;
}
}
यह एक संख्या को विपरीत में प्रिंट करेगा।
प्रबंधन नहीं करती है सवाल यह है कि रिवर्स में एक नंबर मुद्रित करने के लिए नहीं था। यह एक संख्या मुद्रित करने के लिए था। –
इस सही क्रम परिणाम होगा:
void print_int(int num){
int a = num;
if (num < 0)
{
putc('-');
num = -num;
}
if (num > 9) print_int(num/10);
putc('0'+ (a%10));
}
- 1. printf
- 2. printf
- 3. printf
- 4. printf
- 5. printf
- 6. printf
- 7. printf
- 8. printf
- 9. क्या printf ("% i") और printf ("% d")
- 10. printf + uint_64?
- 11. Printf विधानसभा
- 12. कैसे printf
- 13. printf नाव
- 14. LD_PRELOAD printf
- 15. सी: printf()
- 16. printf% f?
- 17. जावा: printf
- 18. /बिन/बैश printf सी
- 19. सी printf हस्ताक्षरित फ्लोट
- 20. printf और ++ ऑपरेटर
- 21. printf() घोषित कैसे करें?
- 22. c - चेतावनी: समारोह 'printf'
- 23. printf और स्वरूपण नियम
- 24. CUDA 4.1 printf() त्रुटि
- 25. printf विसंगति "कांटा()"
- 26. क्या "% .6d" printf
- 27. एफ # printf स्ट्रिंग
- 28. लंबे printf कैसे
- 29. printf के हार्डवेयर
- 30. "printf", इसके लिए क्या है?
'float' और' double' पूर्णांकों नहीं हैं। – dreamlax
आपको इसकी आवश्यकता क्यों होगी? की – gnud
संभव डुप्लिकेट [कैसे आप एक IEEE754 संख्या प्रिंट आउट है (printf के बिना)?] (http://stackoverflow.com/questions/4274926/how-do-you-print-out-an-ieee754-number-without- printf) –