file - how while loop is incremented in feof( ) to read in C -
मेरे पास निम्न कोड है।
जबकि (! Feof (fp1) & amp; amp; ;; Feof (fp2) {fscanf (fp1, "% s", नाम); fscanf (fp2, "% s", usn); fprintf (fp3, "% s% s \ n", नाम, usn);}
इसमें मैं समझता हूं कि एफओएफ फ्लैग सेट होगा जब ईओएफ पढ़ा जाता है। लेकिन फ़ाइल में किसी और के बाद स्ट्रिंग कैसे पढ़ती है? मैंने लूप में ऐसा कोई कोड शामिल नहीं किया है। यह दोनों फाइलों में अंत तक सभी तार पढ़ता है और एफपीओ को लिखता है। कृपया
जांचें पिछले <> IO ऑपरेशन।
जबकि ((fscanf (fp1, "% s", नाम)! = EOF) & amp; amp; (fscanf (fp2, "% s", usn)! = EOF)) {fprintf (एफपीई, "% s% s \ n", नाम, usn);}
विस्तार से:
"फफफ फ्लैग सेट होगा जब EOF पढ़ा जाता है "गलत-अग्रणी है। EOF नहीं है कुछ पढ़ा है यह ऐसी स्थिति है जो तब होती है जब इनपुट का प्रयास होता है, लेकिन विफल रहता है क्योंकि कोई अधिक डेटा संभव नहीं है सी में, कोड यह नहीं जानता है कि अगले कोड की वापसी की जांच नहीं करता है कोड को पढ़ने और असफल होने की कोशिश करने की आवश्यकता है। "फ़ाइल में किसी और के बाद स्ट्रिंग कैसे पढ़ती है? ..." केवल पोस्ट कोड के रूप में अनुमान लगाया जा दोषपूर्ण है। जबकि मान ( ओपी ने char
इनपुट को पढ़ने से पहले उपलब्ध है या नहीं। fscanf (fp1, "% s", नाम)
fscanf ()
का मान यह खतरनाक है क्योंकि कोड को आश्वस्त नहीं किया जाता है कि कुछ भी नाम
में पढ़ा गया था। निश्चय है कि scanf ()
सफल मान (या नहीं) रिटर्न मान की जांच करके प्राप्त होता है। जबकि (! Feof (fp1) & amp;! Feof (fp2) <
है कम से कम एक
गुम है)
। जैसा कि सच कोड ओ.पी. है तो अनुमान-काम है fp1
और / या fp2
के रूप में जारी रहता है और इसलिए उनकी अंतिम अवस्था में printf ()
में शायद पहले से पढ़ा गया नाम
और / या usn
की दोहराता है। घोषणा नहीं की है नाम, USN
। काफी संभव है, इनमें से कोई भी डेटा पढ़े जाने के लिए अपर्याप्त है और बफ़र्स पर अधिक प्रवाह होता है जिसके परिणामस्वरूप अपरिभाषित व्यवहार होता है। @ash
Comments
Post a Comment