stdout टर्मिनल से कनेक्ट होने पर लाइन-बफर किया गया है, लेकिन मुझे कहीं पढ़ना याद है कि पढ़ना (कम से कम stdin से) स्वचालित रूप से stdout फ्लश करेगा। मेरे द्वारा उपयोग किए गए सभी सी कार्यान्वयन ने यह किया है, लेकिन मुझे अब मानक में नहीं मिल रहा है।stdin flush stdout से पढ़ रहा है?
यह भावना है कि यह उस तरह से काम करता है, अन्यथा इस तरह कोड पड़ता है:
printf("Type some input: ");
fgets(line, sizeof line, stdin);
की आवश्यकता होगी एक अतिरिक्त fflush(stdout);
तो stdout यहाँ प्लावित होने की गारंटी है?
संपादित करें:
के रूप में कई उत्तरों कहा है, वहाँ मानक है कि उत्पादन मेरी उदाहरण stdin से पढ़ने से पहले दिखाई देगा में stdout करने में कोई गारंटी प्रतीत हो रहा है, लेकिन दूसरी ओर , इस आशय मानक (के अपने मुक्त मसौदा प्रतिलिपि) में कहा गया है:
इनपुट और आउटपुट इंटरैक्टिव उपकरणों की गतिशीलता 7.19.3 में विनिर्दिष्ट जगह ले जाएगा। का इरादा यह है कि या लाइन-बफर्ड आउटपुट जल्द से जल्द जितनी संभव हो सके, संदेश को इनपुट इनपुट के लिए प्रतीक्षा करने से पहले दिखाई देने के लिए यह सुनिश्चित करने के लिए अनबफर किया गया है।
(आईएसओ/आईईसी 98 99: टीसी 2 कमेटी ड्राफ्ट - 6 मई, 2005, पृष्ठ 14)।
तो ऐसा लगता है कि कोई गारंटी नहीं है, लेकिन यह संभवतः अधिकांश कार्यान्वयन में काम करेगा। (प्रसिद्ध अंतिम शब्द ...)
7.1 9.3 (सी 11 में 7.21.3) के क्रॉस संदर्भ के बाद भी उपयोगी है, क्योंकि यह उल्लेख करता है कि इनपुट ऑपरेशन से फ्लशिंग होने की क्या उम्मीद है। इन पर चर्चा की गई है https://stackoverflow.com/a/39536803/8586227। –