c - I am not able to flush stdin -


कैसे स्ट्रड फ्लश करें ??

यह निम्नलिखित कोड स्निपेट में क्यों काम नहीं कर रहा है?

  #include & lt; string.h & gt; # शामिल करें & lt; stdio.h & gt; # शामिल करें & lt; malloc.h & gt; # शामिल करें & lt; fcntl.h & gt; Int main () {int i = 0, j = 0, sat; चार आर्ज [256]; चार * argq; Argq = मॉलोक (आकारफ़ (चैर) * 10); Printf ("इनपुट पंक्ति \ n"); मैं = पढ़ा (0, आरजीआर, आकारफ (चैर) * 9); आर्ग [i-1] = '\ 0'; fflush (stdin); मैं = पढ़ा (0, आर्जक, आकारफ (चार) * 5); argq [i-1] = '\ 0'; पुट (आर्ग); पुट (argq); वापसी 0; }  

अब अगर मैं इनपुट को 11 वर्णों के रूप में देता हूं, केवल 9 पढ़ा जाना चाहिए, लेकिन शेष दो अक्षर स्ट्डीन में फ्लश नहीं किए जाते हैं और फिर argq में पढ़ते हैं। क्यों?

इनपुट: 123 456 789

आउटपुट: 123 456 89

मुझे आउटपुट के रूप में 89 क्यों मिल रहा है?

मेरा मानना ​​है कि फ़फ़ल का उपयोग केवल आउटपुट स्ट्रीमों के साथ किया जाता है।

आप लिनक्स पर कोशिश कर सकते हैं या ध्यान दें कि फल्पगे गैरमानक है और पोर्टेबल नहीं है यह आपके लिए उपलब्ध नहीं हो सकता है।

से: आम तौर पर इनपुट बफ़र्स को त्यागने के लिए एक गलती है।

फ्लडिंग स्ट्डीन के लिए सबसे पोर्टेबल समाधान शायद कुछ निम्न की लाइन:

  int c; जबकि ((c = getchar ()) = '\ n' & amp; c! = EOF);  

Comments

Popular posts from this blog

c++ - QtQuick: QQmlApplicationEngine failed to load component qrc:/main.qml:23 Invalid attached object assignment -

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

iphone - Smoothing a rounded stroke in Core Graphics -