formatting i o printf
यह ट्यूटोरियल प्रिंट, स्प्रिंट, स्कैनफ जैसे कार्यात्मकताओं के उपयोग और उदाहरणों की चर्चा करता है जो C ++ में इनपुट / आउटपुट बनाने के लिए उपयोग किए जाते हैं:
हमारे पिछले C ++ ट्यूटोरियल्स में, हमने देखा है कि हम C ++ में Cin / cout का उपयोग करके इनपुट-आउटपुट ऑपरेशन कर सकते हैं।
इन निर्माणों का उपयोग करने के अलावा, हम सी लाइब्रेरी का उपयोग भी कर सकते हैं। C मानक इनपुट और आउटपुट लाइब्रेरी (cstdio, C ++ को stdio.h शीर्ष लेख के लिए C भाषा में समतुल्य) का उपयोग करते हुए, हम 'स्ट्रीम' का उपयोग करके I / O संचालन करते हैं जो कीबोर्ड (मानक इनपुट), प्रिंटर, टर्मिनल (मानक आउटपुट) जैसे भौतिक उपकरणों के साथ काम करते हैं ) या ऑपरेटिंग सिस्टम द्वारा समर्थित किसी अन्य फ़ाइल प्रकार।
=> यहाँ गहराई सी ++ प्रशिक्षण ट्यूटोरियल की जाँच करें।
धाराएँ एक सारगर्भित इकाई के रूप में भौतिक उपकरणों के साथ बातचीत करने के लिए उपयोग की जाने वाली एक अमूर्त इकाई और कुछ नहीं हैं सभी धाराओं में समान विशेषताएं हैं और भौतिक मीडिया उपकरणों से स्वतंत्र हैं।
इस ट्यूटोरियल में हमारे अगले विषयों में, हम कुछ कार्यों के बारे में विस्तार से जानेंगे, अर्थात् प्रिंटफ, स्प्रिंट और स्कैनफ।
आप क्या सीखेंगे:
- सी ++ प्रिंटफ
- सी ++ स्प्रिंटफ
- सी ++ स्कैनफ़
- स्कैनफ़ / प्रिंटफ़ बनाम। C ++ में Cin / cout
- बार बार पूछे जाने वाले प्रश्न
- निष्कर्ष
सी ++ प्रिंटफ
C ++ में Printf फ़ंक्शन का उपयोग आउटपुट को लिखने के लिए किया जाता है, जिसे stdout में स्वरूपित किया जाता है।
समारोह प्रोटोटाइप:
int प्रिंटफ (कास्ट चार * प्रारूप,…);
पैरामीटर:
प्रारूप => फ़ाइल स्ट्रीम के लिए लिखा गया अशक्त-समाप्त स्ट्रिंग के लिए एक सूचक। इसमें वर्णों के साथ एक वैकल्पिक प्रारूप विनिर्देशक होता है जो% से शुरू होता है। प्रारूप विनिर्देशक को उपयुक्त मानों द्वारा प्रतिस्थापित किया जाता है जो प्रारूप स्ट्रिंग का पालन करते हैं।
… => अन्य अतिरिक्त तर्क जो डेटा को प्रारूप में निर्दिष्ट किए जाने के लिए निर्दिष्ट करते हैं।
प्रतिलाभ की मात्रा:
यूट्यूब वीडियो को एमपी 3 में बदलने का सबसे अच्छा तरीका
सफलता => प्रिंटफ ने वर्णों की संख्या वापस लौटा दी।
असफलता => ऋणात्मक मान
विवरण:
प्रिंटफ फ़ंक्शन हेडर में परिभाषित किया गया है। Printf फ़ंक्शन मानक आउटपुट स्टैडआउट के लिए 'प्रारूप' सूचक द्वारा इंगित स्ट्रिंग लिखते हैं। प्रारूप स्ट्रिंग में प्रारूप विनिर्देशक शामिल हो सकते हैं जो तब अतिरिक्त तर्क (प्रारूप स्ट्रिंग के बाद) के रूप में प्रिंटफ फ़ंक्शन में पारित चर द्वारा प्रतिस्थापित किए जाते हैं।
स्वरूप विनिर्देशक का उपयोग प्रिंटफ () फ़ंक्शन में किया जाता है
प्रारूप विनिर्देशक का एक सामान्य रूप है
%(flags)(width)(.precision)(length)specifier
नीचे दिए गए प्रारूप विनिर्देशक के प्रत्येक भाग का विवरण दिया गया है:
- % संकेत: यह एक अग्रणी% चिह्न है
- झंडे: उनके निम्नलिखित मूल्य हो सकते हैं:
- - - वाम क्षेत्र के भीतर परिणाम को सही ठहराता है। डिफ़ॉल्ट रूप से, अधिकार उचित है।
- +: सकारात्मक परिणाम सहित मूल्य की शुरुआत से जुड़े परिणाम का संकेत।
- अंतरिक्ष: एक संकेत के अभाव में, अंतरिक्ष परिणाम की शुरुआत से जुड़ा हुआ है।
- #: रूपांतरण का एक वैकल्पिक रूप निर्दिष्ट करें।
- 0: पूर्णांक और फ्लोटिंग-पॉइंट संख्याओं के लिए उपयोग किया जाता है। अंतरिक्ष की अनुपस्थिति में अग्रणी शून्य के रूप में कार्य करना।
- चौड़ाई: न्यूनतम फ़ील्ड चौड़ाई को * या पूर्णांक मान के रूप में निर्दिष्ट करता है। यह वैकल्पिक है।
- परिशुद्धता: Precision * के साथ परिशुद्धता निर्दिष्ट करता है। इसके बाद * या पूर्णांक या कुछ भी नहीं। यह भी वैकल्पिक है।
- लंबाई: वैकल्पिक तर्क जिसमें तर्क का आकार निर्दिष्ट किया गया है।
- विनिर्देशक: यह एक रूपांतरण प्रारूप विनिर्देशक है।
C ++ में उपयोग किए जाने वाले विभिन्न प्रारूप विनिर्देश इस प्रकार हैं:
ऐसा न करें | विनिर्देशक | विवरण |
---|---|---|
। | यू | अहस्ताक्षरित पूर्णांक को दशमलव प्रतिनिधित्व में परिवर्तित करता है। |
1 | % | एक% प्रिंट करता है। |
दो | सी | प्रिंट एकल चरित्र। |
३ | रों | एक तार प्रिंट करता है। |
४ | d / i | दशमलव प्रतिनिधित्व में पूर्णांक पर हस्ताक्षर किए। |
५ | या | अहस्ताक्षरित पूर्णांक को अष्ट प्रतिनिधित्व में परिवर्तित करता है। |
६ | एक्स / एक्स | अहस्ताक्षरित पूर्णांक को हेक्साडेसिमल प्रतिनिधित्व में परिवर्तित करता है। |
। | एफ / एफ | दशमलव प्रतिनिधित्व के लिए फ़्लोटिंग-पॉइंट संख्या को परिवर्तित करता है |
९ | और / ई | दशमलव प्रतिपादक अंकन के लिए फ्लोटिंग-पॉइंट संख्या को परिवर्तित करता है। |
१० | ए / ए | एक हेक्साडेसिमल प्रतिपादक के लिए फ्लोटिंग-पॉइंट संख्या को परिवर्तित करता है। |
ग्यारह | जी / जी | दशमलव या दशमलव प्रतिपादक अंकन के लिए फ्लोटिंग-पॉइंट संख्या को परिवर्तित करता है। |
१२ | एन | इस फ़ंक्शन कॉल द्वारा अब तक लिखे गए वर्णों की संख्या। |
१३ | पी | कार्यान्वयन सूचक चरित्र अनुक्रम को इंगित करने वाला एक सूचक। |
नीचे दिया गया एक पूर्ण C ++ प्रोग्रामिंग उदाहरण है जो ऊपर चर्चा की गई प्रिंटफ फ़ंक्शन को प्रदर्शित करता है।
C ++ प्रिंटफ उदाहरण
#include //C++ printf example int main() { char ch = 'A'; float a = 8.0, b = 3.0; double d = 3.142; int x = 20; printf('float division : %.3f / %.3f = %.3f
', a,b,a/b); printf('Double value: %.4f
', d); printf('Setting width %*c
',4,ch); printf('Octal equivalent of %d is %o
',x,x); printf('Hex equivalent of %d is %x
',x,x); return 0; }
आउटपुट:
उपरोक्त कार्यक्रम प्रिंटफ फ़ंक्शन के लिए विभिन्न कॉलों का उपयोग करता है और हम ध्यान दें कि प्रत्येक कॉल प्रिंटफ़ हम ऊपर चर्चा किए गए विभिन्न प्रारूप निर्दिष्टकों का उपयोग करते हैं। प्रारूप विनिर्देशक% .3f 3 दशमलव स्थानों तक फ्लोट मान को दर्शाता है। बाकी प्रिंटफ कॉल में चरित्र, दशमलव, अष्टक और हेक्स मान प्रदर्शित होते हैं।
सी ++ स्प्रिंटफ
सी ++ में स्प्रिंटफ फ़ंक्शन एक अंतर को छोड़कर प्रिंटफ फ़ंक्शन के समान है। आउटपुट को मानक आउटपुट स्टडआउट में लिखने के बजाय, स्प्रिंटफ आउटपुट को एक स्ट्रिंग स्ट्रिंग बफर में लिखता है।
समारोह प्रोटोटाइप:
इंट स्प्रिंटफ (चार * बफर, कॉन्स्ट चार * प्रारूप,…)
पैरामीटर:
बफर => एक स्ट्रिंग बफर को इंगित करें जिसके लिए परिणाम लिखा जाना है।
स्वरूप => एक शून्य-टर्म स्ट्रिंग को इंगित करता है जो फ़ाइल स्ट्रीम के लिए लिखा जाता है।
नोट: स्प्रिंट फ़ंक्शन में उपयोग किया जाने वाला प्रारूप स्ट्रिंग वही है जो प्रिंटफ़ फ़ंक्शन विवरण के भाग के रूप में चर्चा की गई है।
… => अन्य अतिरिक्त तर्क जो डेटा को प्रारूप में निर्दिष्ट किए जाने के लिए निर्दिष्ट करते हैं।
प्रतिलाभ की मात्रा:
सफलता => समाप्त होने वाले अशक्त वर्ण को छोड़कर पर्याप्त रूप से बड़े बफर को लिखे गए वर्णों की संख्या लौटाता है।
असफलता => ऋणात्मक मान लौटाया जाता है।
विवरण:
स्प्रिंट फंक्शन हेडर में परिभाषित किया गया है। स्प्रिंट फ़ंक्शन का उपयोग प्रारूप स्ट्रिंग स्ट्रिंग द्वारा इंगित स्ट्रिंग लिखने के लिए किया जाता है। स्ट्रिंग प्रारूप में% के साथ शुरू होने वाले प्रारूप विनिर्देशक हो सकते हैं जो कि स्प्रिंट () फ़ंक्शन के अतिरिक्त चर के रूप में पारित होने वाले चर के मूल्यों द्वारा प्रतिस्थापित किए जाते हैं।
आइए एक उदाहरण देखें C ++ प्रोग्राम जो स्प्रिंटफ फ़ंक्शन के उपयोग को दर्शाता है।
स्प्रिंटफ उदाहरण
#include #include using namespace std; int main() { char mybuf(100); int retVal; char name() = 'Software Testing Help'; char topic() = 'C++ tutorials'; retVal = sprintf(mybuf, 'Hi, this is %s and you are reading %s !!', name, topic); cout << mybuf << endl; cout << 'Number of characters written = ' << retVal << endl; return 0; }
आउटपुट:
ऊपर दिए गए उदाहरण में, पहले, हम स्प्रिंट फंक्शन का उपयोग करके एक चरित्र बफर mybuf को एक स्वरूपित स्ट्रिंग लिखते हैं। फिर हम cout का उपयोग करके स्ट्रिंग को प्रदर्शित करते हैं। अंत में, हम mybuf बफर को लिखे गए वर्णों की संख्या प्रदर्शित करते हैं।
सी ++ स्कैनफ़
C ++ में स्कैनफ फंक्शन मानक इनपुट स्टड से इनपुट डेटा को पढ़ता है।
समारोह प्रोटोटाइप:
int स्कैनफ (कास्ट चार * प्रारूप,…)
पैरामीटर:
प्रारूप => एक शून्य-समाप्त स्ट्रिंग को इंगित करता है जो इनपुट को पढ़ने के तरीके को परिभाषित करता है। इस प्रारूप स्ट्रिंग में प्रारूप विनिर्देशक होते हैं।
… => डेटा इनपुट प्राप्त करने वाले अतिरिक्त तर्क। प्रारूप विनिर्देशक के अनुसार ये अतिरिक्त तर्क क्रम में हैं।
प्रतिलाभ की मात्रा:
सफलता => में पढ़े गए कई वर्ण लौटाता है।
मिलान करना => यदि मिलान प्राप्त विफलता पहले असाइन किए गए तर्क को असाइन करने से पहले शून्य हो जाता है।
इनपुट विफलता => EOF लौटाता है यदि पहले प्राप्त तर्क को असाइन करने से पहले इनपुट विफलता होती है।
विवरण:
Scanf () फ़ंक्शन हेडर में परिभाषित किया गया है। यह फ़ंक्शन प्रदान किए गए चर में स्टडिन और स्टोर्स के डेटा को पढ़ता है।
स्कैनिफायर में प्रयुक्त प्रारूप विनिर्देशक () फ़ंक्शन
स्कैनफ़ () फ़ंक्शन प्रारूप स्ट्रिंग के लिए सामान्य प्रारूप है:
%(*)(width)(length)specifier
इस प्रकार प्रारूप विनिर्देशक के निम्नलिखित भाग होते हैं:
- गैर-व्हाट्सएप चरित्र: ये% को छोड़कर वर्ण हैं जो इनपुट स्ट्रीम से एक समान वर्ण का उपभोग करते हैं।
- व्हाट्सएप चरित्र: सभी लगातार व्हाट्सएप पात्रों को एक व्हाट्सएप चरित्र माना जाता है। वही पलायन दृश्यों के लिए भी जाता है।
- रूपांतरण विनिर्देश: इसका निम्न प्रारूप है:
- %: चरित्र जो शुरुआत को निर्दिष्ट करता है।
- *: जिसे असाइनमेंट दमन वर्ण कहा जाता है। यदि मौजूद है, तो स्कैनफ़ किसी भी प्राप्त मापदंडों को परिणाम प्रदान नहीं करता है। यह पैरामीटर वैकल्पिक है।
- क्षेत्र की चौड़ाई: वैकल्पिक पैरामीटर (एक सकारात्मक पूर्णांक) जो अधिकतम फ़ील्ड चौड़ाई निर्दिष्ट करता है।
- लंबाई: एक तर्क प्राप्त करने के आकार को निर्दिष्ट करता है।
रूपांतरण प्रारूप विनिर्देशक निम्नानुसार हो सकते हैं:
ऐसा न करें | प्रारूप निर्दिष्ट करनेवाला | विवरण |
---|---|---|
। | एक्स / एक्स | अहस्ताक्षरित हेक्साडेसिमल पूर्णांक से मेल खाता है। |
1 | % | शाब्दिक% से मेल खाता है। |
दो | सी | चौड़ाई तक एकल वर्ण या एकाधिक वर्ण से मेल खाता है। |
३ | रों | निर्दिष्ट चौड़ाई या पहले व्हाट्सएप तक गैर-व्हाट्सएप चरित्र के अनुक्रम का मिलान करता है। |
४ | घ | दशमलव से मेल खाता है। |
५ | मैं | पूर्णांक से मेल खाता है। |
६ | या | अहस्ताक्षरित अष्टक पूर्णांक से मेल खाता है। |
। | यू | अहस्ताक्षरित दशमलव पूर्णांक से मेल खाता है। |
९ | ए / ए, ई / ई, एफ / एफ, जी / जी | फ्लोटिंग-पॉइंट नंबर से मेल खाता है। |
१० | (सेट) | दिए गए सेट से वर्णों के गैर-खाली क्रम से मेल खाता है। यदि ^ से पहले किया जाता है, तो सेट में नहीं वर्णों का मिलान किया जाता है। |
१२ | एन | अब तक पढ़े गए पात्रों की संख्या। |
१३ | पी | विशिष्ट चरित्र अनुक्रम को लागू करने के लिए सूचक। |
अगला, हम C ++ में स्कैनफ फ़ंक्शन के उपयोग को प्रदर्शित करने के लिए एक नमूना कार्यक्रम लागू करेंगे
स्कैनफ उदाहरण
#include int main () { char str (80), pos_str(80); int i; printf ('Enter your company name: '); scanf ('%79s',str); printf ('Enter your position: '); scanf ('%s',pos_str); printf ('You work at %s as %s.
',str,pos_str); printf ('Enter a hexadecimal number: '); scanf ('%x',&i); printf ('You have entered %#x (%d).
',i,i); return 0; }
आउटपुट:
उपरोक्त कार्यक्रम में, हम दो इनपुट स्ट्रिंग्स और एक हेक्साडेसिमल संख्या पढ़ते हैं। फिर हम दो तारों को जोड़ते हैं और परिणामी स्ट्रिंग प्रदर्शित करते हैं। संख्या को दशमलव में परिवर्तित किया जाता है और प्रदर्शित किया जाता है।
स्कैनफ़ / प्रिंटफ़ बनाम। C ++ में Cin / cout
स्कैनफ / प्रिंटफ | लागत / लागत |
---|---|
सी भाषा में मानक इनपुट-आउटपुट। | C ++ भाषा में मानक इनपुट-आउटपुट। |
'Stdio.h ’में परिभाषित। | 'आईस्ट्रीम' में परिभाषित। |
स्कैनफ और प्रिंटफ आई / ओ के लिए उपयोग किया जाने वाला एक फ़ंक्शन है। | Cin और cout स्ट्रीम ऑब्जेक्ट हैं। |
प्रारूप स्ट्रिंग का उपयोग इनपुट और आउटपुट को प्रारूपित करने के लिए किया जाता है। | संचालक >> और<< are overloaded and used along with cin and cout respectively. कोई प्रारूप स्ट्रिंग उपयोग नहीं किया जाता है। |
हम स्थान धारक का उपयोग करके डेटा का प्रकार निर्दिष्ट करते हैं। | डेटा प्रकार निर्दिष्ट करने की आवश्यकता नहीं है। |
बार बार पूछे जाने वाले प्रश्न
Q # 1) क्या आप C ++ में प्रिंटफ का उपयोग कर सकते हैं?
उत्तर: हाँ। Printf का उपयोग C ++ में किया जा सकता है। C ++ प्रोग्राम में इस फ़ंक्शन का उपयोग करने के लिए, हमें प्रोग्राम में हेडर शामिल करना होगा।
Q # 2) प्रिंटफ किस भाषा का उपयोग करता है?
उत्तर: Printf C भाषा में मानक आउटपुट फ़ंक्शन है। इसका उपयोग C ++ प्रोग्राम में हेडर को शामिल करके C ++ लैंग्वेज में भी किया जा सकता है।
Q # 3) C प्रोग्रामिंग में% d क्या है?
उत्तर: प्रिंटफ फ़ंक्शन में% d मान एक पूर्णांक मान को संदर्भित करता है।
Q # 4) Scanf में क्यों और कैसे उपयोग किया जाता है?
उत्तर: & ऑपरेटर का उपयोग मेमोरी लोकेशन तक पहुंचने के लिए किया जाता है। यह स्पष्ट रूप से पारित करने के बजाय चर के लिए एक सूचक पारित करने के लिए आशुलिपि है।
Q # 5) प्रिंटफ () और स्प्रिंटफ () के बीच क्या अंतर है?
उत्तर: दोनों फ़ंक्शंस printf () और sprintf () एक अंतर को छोड़कर समान हैं। जबकि प्रिंटफ () आउटपुट को stdout (मानक आउटपुट) को लिखता है, स्प्रिंटफ आउटपुट को एक स्ट्रिंग स्ट्रिंग बफर में लिखता है।
Q # 6) क्या स्प्रिंटफ शून्य समाप्त होता है?
उत्तर: स्प्रिंटफ ने अशक्त समाप्ति वर्ण को छोड़कर चरित्र स्ट्रिंग सरणी में संग्रहीत वर्णों की संख्या लौटाता है।
क्यू # 7) स्प्रिंट असुरक्षित क्यों है?
उत्तर: स्प्रिंटफ फ़ंक्शन गंतव्य बफर की लंबाई की जांच नहीं करता है। इसलिए जब प्रारूप स्ट्रिंग की लंबाई बहुत लंबी होती है, तो फ़ंक्शन गंतव्य बफर के अतिप्रवाह का कारण हो सकता है। इससे एप्लिकेशन अस्थिरता और सुरक्षा समस्या हो सकती है जिससे स्प्रिंटफ फ़ंक्शन असुरक्षित हो सकता है।
निष्कर्ष
इस ट्यूटोरियल में, हमने C लाइब्रेरी इनपुट-आउटपुट फ़ंक्शंस - प्रिंटफ़, स्प्रिंटफ़ और स्कैनफ़ को सीखा है जिसका उपयोग C ++ में किया जा सकता है जिसमें हेडर शामिल है जो C हेडर के बराबर है।
जैसा कि पहले ही चर्चा की जा चुकी है, इनपुट-आउटपुट फ़ंक्शंस फ़ॉरमेट स्पेसियर्स और प्लेस होल्डर्स में काम करता है और हमें उन डेटा प्रकारों को निर्दिष्ट करने की आवश्यकता होती है जिनमें डेटा पढ़ा या लिखा जाता है।
इसके विपरीत, C ++ - cin और cout में उपयोग की जाने वाली स्ट्रीमिंग ऑब्जेक्ट्स किसी भी प्रारूप विनिर्देशक या प्लेसहोल्डर का उपयोग नहीं करते हैं। वे ओवरलोड >> और का उपयोग करते हैं<< operators to read in and write the data.
=> यहां परफेक्ट सी ++ ट्रेनिंग गाइड देखें।