दिलचस्प पोस्ट
मैं विंडोज डेवलपमेंट मशीन का इस्तेमाल करके आईफोन के लिए कैसे विकसित कर सकता हूं? jQuery को एक पूर्ण डिवा पर माउस को स्क्रॉल करें क्या मैं ASP.NET MVC में "विचारों की खोज" के लिए एक कस्टम स्थान निर्दिष्ट कर सकता हूं? दो तिथियों के बीच एंड्रॉइड अंतर रेल बनाम नया बना डिव के पहलू अनुपात बनाए रखें लेकिन सीएसएस में स्क्रीन चौड़ाई और ऊंचाई भरें? एचटीएमएल को लगता है कि "चॉकनोरिस" एक रंग क्यों है? जावा: ऑब्जेक्ट बाइट और बाइट कनवर्टर ऑब्जेक्ट (टोक्यो कैबिनेट के लिए) जावास्क्रिप्ट क्या एकल-थ्रेडेड होने की गारंटी है? विभिन्न डेटाबेस के बीच MySQL InnoDB विदेशी कुंजी Google खोज परिणामों में वेबसाइट शीर्षक को अलग-अलग प्रदर्शित करता है फ़ायरफ़ॉक्स में अतिरिक्त बटन रिक्ति / पैडिंग निकालें हम लॉगरर्स को स्थिर फाइनल क्यों घोषित करते हैं? XML या Sqlite, जब एक डाटाबेस के लिए एक्सएमएल ड्रॉप करना है? प्रतिक्रिया के तेज के बराबर क्या है?

मानक इनपुट स्ट्रीम (stdin) की फ़ाइल का अंत (ईओएफ)

क्या स्टडिन में कोई ईओएफ है? उदाहरण के लिए – अगर मैं स्टडिन से पढ़ने / पढ़ना शुरू करता / करती हूं तो निम्न पाश समाप्त होने पर?

while ((c = read(0, buffer, BUFSIZ)) > 0) { . . . } 

अगर ऊपर का समाधान नहीं है, तो क्या स्टडिन में ईओएफ जोड़ने का कोई तरीका है?

वेब के समाधान से एकत्रित समाधान "मानक इनपुट स्ट्रीम (stdin) की फ़ाइल का अंत (ईओएफ)"

Stdin में ईओएफ के बारे में बोलते हुए: जब आप फ़ाइल से इनपुट पुनर्निर्देशित करते हैं, उदाहरण के लिए:

 program <input.txt 

फाइल में पहले से ही एक EOF , इसलिए यह एक समस्या नहीं है। कंसोल में आप EOF ध्वज अनुकरण कर सकते हैं यूनिक्स सिस्टम में यह Ctrl + D है , विंडोज़ कंट्रोल + जेड में । जब आप इसे कंसोल में टाइप करते हैं, तो कार्यक्रम व्यवहार करेगा जैसे कि वह अभी इनपुट फ़ाइल के अंत तक पहुंच गया है।


संपादित करें

ओपी द्वारा पूछा गया एक प्रश्न के अनुसार:

तो क्या इसका मतलब यह है कि stdin में ईओफ़ नहीं है और हमें उन्हें Ctrl + Z या Ctrl + D का उपयोग करने के लिए मैन्युअल रूप से सम्मिलित करना होगा?

वास्तव में हाँ। कोई भी अनंत फ़ाइल के रूप में stdin (कूटवाही से नहीं बल्कि पुनर्निर्देशित) को ध्यान में रख सकता है – कोई भी यह नहीं बता सकता कि यह अंत कहाँ है। इनपुट फ़ाइल का अंत, जहां input ist stdin, को Ctrl + D या Ctrl + Z से शाब्दिक रूप से बताया जाना चाहिए।

मैंने खिड़कियों में सी प्रोग्राम कभी नहीं किया है इसलिए मैं आपको नहीं बता सकता, लेकिन बाश में, जब आप डेटा का अंत टाइप करें (Ctrl + D) टाइप करते हैं तो प्रोग्राम को एक EOF मिलेगा

 while ((c = read(0, buffer, BUFSIZ)) > 0) { 

आप यह नहीं कहते हैं कि c का प्रकार है, लेकिन उस नाम का प्रयोग करने से पता चलता है कि यह एक char । ध्यान दें कि iosteams के लिए EOF मान (int) -1 संग्रहीत कि एक अहस्ताक्षरित चार में आपको 255 का मान मिलेगा जो ईओएफ से मेल नहीं खाएगा।

ईओएफ के लिए परीक्षण करने का तरीका फ़्रेड के रिटर्न वैल्यू की जांच करना है, और फिर फीफ का उपयोग करना है:

 while( fread( ... ) ) { // loop so long as fread does not return zero // do something } if ( feof( stdin ) ) { // read failed because of EOF } else { // some other error } 

आपका समाधान C ++ टैग है, इसलिए यहां कुछ सी ++ है

 std::string lols; while(!(std::cin >> lols).eof()) { // This loop will end when EOF is reached // Process string } 

प्रथम getchar () वास्तव में getc (stdin) है तो getc (FILE) आप उस से अधिक पढ़ सकते हैं getchar () आपको इनपुट स्ट्रीप या stdin दबाकर प्रवेश करने के लिए पिछले 'unprocessed' वर्ण देता है '\ n'। अगर स्टैडिन रिक्त है तो खाली कर्मी इनपुट प्राप्त करने के लिए एक विराम देता है। एक प्रोग्राम में कहते हैं, मैं पहले getchar () को कॉल करता हूं, पहले stdin खाली है, इसलिए यह इनपुट के लिए विराम देता है। यदि मैं 'ए' में प्रवेश करता हूं तो पहले प्राप्तकर्ता () को 'ए' की एस्सीआई मिलेगी। अगली बार जब मैं कॉल करता हूं () मुझे बी मिलेगी, फिर मिल जाएगा () में '\ n' होगा।

इस कोड को यह साबित करने के लिए।

  int choice; do { cout << "Enter input:" ; choice = getchar(); cout << "Last getchar(): " << choice << ":" << (char) choice ; if( choice == '0' || choice == EOF) { cout << "Exited loop" << endl; // EOF is ctrl+z in windows break; } }while(true); 

मेरा मानना ​​है कि stdin एक वैश्विक है, जब तक कि getchar () या समान फ़ंक्शन को इसे स्ट्रीम को खाली करने के लिए कहा जाता है, वहां अक्षर रहता है, जो बाद में बग का कारण बन सकता है अगर आप कहीं और मिलते हैं () जैसा कि लोगों ने उल्लेख किया है कि आप का उपयोग कर सकते हैं (चार []) जो अक्षरों में नई लाइन तक सभी अक्षर डालता है इस के साथ समस्या आपको इनपुट से बड़ा चार [] की आवश्यकता है या आपको त्रुटियां मिलेंगी अच्छी बात है (चार []) स्पष्ट stdin करता है ताकि आप stdin को रिक्त करने के लिए या इसे प्रोसेस करने के लिए एक गंदे बफर बना सकते हैं।

मुझे आशा है कि यह जानकारीपूर्ण है