फ़ंक्शन fflush(stdin) का उपयोग स्ट्रीम के आउटपुट बफर को फ्लश करने के लिए किया जाता है। यह सफल होने पर शून्य लौटाता है, अन्यथा EOF लौटाता है और feof एरर इंडिकेटर सेट हो जाता है।
यहां C भाषा में fflush(stdin) का सिंटैक्स है:
int fflush(FILE *stream);
यहां C भाषा में fflush(stdin) का एक उदाहरण है:
उदाहरण
#include <stdio.h>
int main() {
char s[20] = "Helloworld";
printf("स्ट्रिंग: %s", s);
fflush(stdin);
return 0;
}
आउटपुट
स्ट्रिंग: Helloworld
महत्वपूर्ण चेतावनी:
C मानक (C99, C11, C18) के अनुसार, fflush() केवल आउटपुट स्ट्रीम्स या अपडेट मोड में खुली स्ट्रीम्स के लिए परिभाषित है। इनपुट स्ट्रीम (stdin) पर fflush() का उपयोग अनिर्धारित व्यवहार है।
सही विकल्प
इनपुट बफर साफ़ करने के लिए:
// विधि 1: न्यूलाइन तक कैरेक्टर्स पढ़ें और डिस्कार्ड करें
int c;
while ((c = getchar()) != '\n' && c != EOF);
// विधि 2: fgets() का उपयोग करें (सुझाया गया)
char buffer[100];
fgets(buffer, sizeof(buffer), stdin);
// विधि 3: scanf के साथ स्पेस (पिछला व्हाइटस्पेस खाता है)
scanf(" %c", &ch); // %c से पहले स्पेस नोट करें
fflush(stdout) - वैध उपयोग
fflush(stdout) पूरी तरह से वैध और सामान्य है - यह आउटपुट बफर को फ्लश करता है, यह सुनिश्चित करते हुए कि आउटपुट तुरंत दिखाई दे:
printf("प्रोसेसिंग... ");
fflush(stdout); // तुरंत प्रिंट करता है
// लंबी गणना
printf("पूर्ण!\n");