2011-04-17 23 views
29

दोनों के बीच क्या अंतर है?मुझे fprintf के बजाय fputs का उपयोग कब करना चाहिए?

+15

नहीं एक झटका होगा, लेकिन आप के लिए [दो] (http प्रलेखन जाँच की थी: //pubs.opengroup .org/onlinepubs/009695399/functions/printf.html) [function] (http://pubs.opengroup.org/onlinepubs/009695399/functions/fputs.html)? एक स्वरूपित आउटपुट करता है, दूसरा धारा में एक स्ट्रिंग, unformatted आउटपुट करता है। क्या आपके पास एक विशिष्ट सवाल है? –

+1

आपका आसान सी संदर्भ मैनुअल क्या कहता है? –

+1

'फ़ूट्स (एस, एफ)' कार्यात्मक रूप से 'fprintf (f,"% s ", s) के बराबर है। वे दोनों आधुनिक अनुकूलन कंपाइलर्स के साथ एक ही कोड ('fputs' पर कॉल) को संकलित करते हैं। – chqrlie

उत्तर

30

fprintf स्वरूपित आउटपुट करता है। यही है, यह स्वरूप स्ट्रिंग को पढ़ता है और व्याख्या करता है जिसे आप परिणामों के आउटपुट स्ट्रीम को आपूर्ति और लिखते हैं।

fputs बस उस स्ट्रिंग को लिखता है जिसे आप इसे इंगित आउटपुट स्ट्रीम पर आपूर्ति करते हैं।

fputs() इनपुट स्ट्रिंग को पार्स करने की आवश्यकता नहीं है यह पता लगाने के लिए कि आप जो करना चाहते हैं वह स्ट्रिंग प्रिंट करना है। fprintf() आपको आउटपुट के समय स्वरूपित करने की अनुमति देता है।

+0

मैं गलत हो सकता हूं लेकिन अगर आप उपयोगकर्ता द्वारा नियंत्रित स्ट्रिंग मुद्रित करना चाहते हैं तो fputs सुरक्षित है। इसके बारे में बात करते हुए स्टैक ओवरव्लो पर बहुत सी पोस्ट हैं। – Greg0ry

4

उह ... ... puts() सिर्फ एक स्ट्रिंग लिखता है, जबकि printf() में कई प्रकार के डेटा के लिए कई स्वरूपण सुविधाएं हैं।

fputs() http://www.cplusplus.com/reference/clibrary/cstdio/fputs/

fprintf() http://www.cplusplus.com/reference/clibrary/cstdio/fprintf/

प्रलेखन उपयोगी है! इसे पढ़ना सीखें, और आपके पास एक तरफ एक शक्तिशाली टूल होगा।

+8

'puts' /' printf' 'fputs' /' fprintf' के लिए सटीक सहसंबंध नहीं है। 'puts 'अन्य आउटपुट के विपरीत, इसके आउटपुट में' '\ n'' जोड़ता है। –

11

जैसा कि अन्य टिप्पणीकर्ताओं द्वारा बताया गया है (और जैसा कि यह दस्तावेज़ों से स्पष्ट है) बहुत अंतर यह है कि printf तर्कों के स्वरूपण की अनुमति देता है।

शायद आप पूछ रहे हैं कि फ़ंक्शंस बराबर हैं जहां printf() पर कोई अतिरिक्त तर्क पारित नहीं किया गया है? अच्छा, वे नहीं हैं।

char * str; 
    FILE * stream; 
    ... 
    fputs(str,stream); // this is NOT the same as the following line 
    fprintf(stream,str); // this is probably wrong 

दूसरा, संभवतः गलत है क्योंकि fprintf() को स्ट्रिंग तर्क एक अभी भी एक formating स्ट्रिंग है: यह एक स्वरूपण विनिर्देशक के रूप में व्याख्या की जाएगी कि यह एक '%' चरित्र है।

कार्यात्मक रूप से बराबर (लेकिन कम प्रत्यक्ष/कुशल/अच्छा) प्रपत्र

fprintf(stream,"%s", str); 
संबंधित मुद्दे