2011-02-01 17 views
41

संभव डुप्लिकेट:
source code of c/c++ functionsकोड

जहाँ मैं सी कोड है कि इस्तेमाल किया पा सकते हैं मैं सोच रहा था कि जब मैं printf बारे में ("नमस्ते दुनिया! "); मेरे सी प्रोग्रामम में यह जानना कि उसे उस स्ट्रिंग को STDOUT पर प्रिंट करना है। मैंने <stdio.h> में देखा, लेकिन वहां मुझे केवल अपने प्रोटोटाइप int printf (const char * format, ...) मिल सकता है, लेकिन यह आंतरिक रूप से कैसा दिखता है।

+0

किस कार्यान्वयन से? प्रत्येक प्लेटफॉर्म का अपना ... – thkala

+1

मुझे नहीं लगता कि स्रोत उपलब्ध है। वैसे भी +1, मैं हमेशा यह सोच रहा था। – BlackBear

+0

आखिरकार printf को ओएस कॉल करना है ताकि सटीक कार्यान्वयन मंच विशिष्ट हो। प्रिंटफ डाउन से वास्तविक ओएस कॉल तक के निशान के बाद बहुत गन्दा हो सकता है। सी-रनटाइम लाइब्रेरी (सीआरटी) का स्रोत आमतौर पर संकलक (जीसीसी और एमएसवीसी के लिए सच) के साथ उपलब्ध होता है। – Tergiver

उत्तर

0

आपके प्लेटफ़ॉर्म और कार्यान्वयन के आधार पर; एक अच्छा कार्यान्वयन GNU सी जो आप से here

+2

मैं इसे शायद ही एक अच्छा कार्यान्वयन कहूंगा। एक प्रोग्राम लिखने का प्रयास करें जो लूप कॉलिंग 'malloc (10)' के साथ स्मृति को समाप्त करता है, फिर 'printf' का उपयोग करके ... :-) इसमें यूटीएफ -8 लोकेशंस में अनुरूपता के मुद्दे भी हैं। –

57

डाउनलोड कर सकते हैं यहाँ printf की जीएनयू संस्करण है है ... आप इसे vfprintf करने के लिए stdout में गुजर देख सकते हैं:

__printf (const char *format, ...) 
{ 
    va_list arg; 
    int done; 

    va_start (arg, format); 
    done = vfprintf (stdout, format, arg); 
    va_end (arg); 

    return done; 
} 

See here.

यहाँ a link है vfprintf पर ... सभी स्वरूपण 'जादू' यहां होता है।

एकमात्र चीज जो इन कार्यों के बारे में वास्तव में 'अलग' है वह यह है कि वे परिवर्तनीय लंबाई तर्क सूची में तर्क प्राप्त करने के लिए varargs का उपयोग करते हैं। इसके अलावा, वे सिर्फ पारंपरिक सी हैं। (यह पास्कल के printf समकक्ष के विपरीत है, जिसे संकलक में विशिष्ट समर्थन के साथ लागू किया गया है ... कम से कम यह दिन में वापस था।)

+0

यह फ़ाइल मेरे लिनक्स सिस्टम के अंतर्गत कहां स्थित है। मैं आरएचईएल का उपयोग कर रहा हूँ। धन्यवाद! – zack

+0

@ जेरी इसका ऑब्जेक्ट कोड आपके libc में है। स्रोत के लिए glibc स्रोत कोड डाउनलोड करें। – a3f