C ++ ungetc () - C ++ स्टैंडर्ड लाइब्रेरी

C ++ में ungetc () फ़ंक्शन पहले पढ़े गए चरित्र को स्ट्रीम में वापस धकेलता है ताकि इसे फिर से पढ़ा जा सके।

Ungetc () फ़ंक्शन को हेडर फ़ाइल में परिभाषित किया गया है।

ungetc () प्रोटोटाइप

 int ungetc (int ch, FILE * स्ट्रीम);

Ungetc () फ़ंक्शन फ़ाइल को स्ट्रीम के साथ जुड़े बफ़र के लिए वर्ण ch को वापस धकेलता है जब तक कि EOF के बराबर नहीं होता। यदि Ch ईओएफ के बराबर है, तो ऑपरेशन विफल हो जाता है और स्ट्रीम में कोई बदलाव नहीं होता है।

बीच में बिना किसी रीड या रिपोजिटिंग ऑपरेशन के एक से अधिक बार कॉल करने पर फेल होने की कॉल () विफल हो सकती है।

यदि ungetc के लिए एक कॉल सफल है () फ़ाइल स्थिति फ्लैग फ़ॉफ़ का अंत साफ़ हो गया है।

द्विआधारी धाराओं के लिए, एक सफल कॉल करने के लिए एक द्वारा स्ट्रीम स्थिति संकेतक को घटाता है। यदि स्ट्रीम पोजिशन इंडिकेटर शून्य है, तो व्यवहार अनिश्चित है।

टेक्स्ट स्ट्रीम के लिए, ungetc के लिए एक सफल कॉल स्ट्रीम स्थिति सूचक को अनिर्दिष्ट तरीके से संशोधित करता है। लेकिन यह गारंटी है कि सभी पुश-बैक वर्णों को एक रीड ऑपरेशन के साथ पुनर्प्राप्त करने के बाद, स्ट्रीम पोजिशन इंडिकेटर ungetc () को कॉल करने से पहले इसके मान के बराबर है।

ungetc () पैरामीटर

  • ch: चरित्र को पीछे धकेलने के लिए।
  • स्ट्रीम: फाइल स्ट्रीम जहां चरित्र को पीछे धकेला जाता है।

ungetc () रिटर्न मान

  • सफलता पर, ungetc () फ़ंक्शन वर्ण ch देता है।
  • विफलता पर ईओएफ को धारा को बदले बिना वापस कर दिया जाता है।

उदाहरण: कैसे ungetc () फ़ंक्शन काम करता है?

 #include #include #include using namespace std; int main() ( int c; long value = 0; char str() = "101axc"; FILE *fp = fopen("file.txt", "r+"); fputs(str,fp); rewind(fp); while(1) ( c = fgetc(fp); if (isdigit(c)) value = value*10 + c - '0'; else break; ) ungetc(c, fp); cout << "Value = " << value << endl; fclose(fp); return 0; )

जब आप प्रोग्राम चलाते हैं, तो एक संभावित आउटपुट होगा:

 मान = 101

दिलचस्प लेख...