📂

फाइल रीडिंग और EOF समझ

Dec 11, 2025

Overview

  • लेक्चर में फ़ाइल रीडिंग (for read) का सिद्धांत और प्रैक्टिकल उपयोग समझाया गया।
  • मुख्य फोकस: read file, EOF (End Of File), और loop के साथ फाइल कंटेंट प्रिंट करना।
  • उदाहरण: sample.txt, highscore.txt, और music file पर प्रोग्रामिंग असाइनमेंट चर्चा हुई।

Read File का बेसिक कांसेप्ट

  • फाइल रीड करने के लिए फाइल पहले से EXISTING होनी चाहिए।
  • read file एक बार कॉल करने पर एक सिंगल लाइन पढ़ता है और वह वैरिएबल में स्टोर होती है।
  • हर बार read file कॉल करने पर वैरिएबल ओवरराइट होती है।
  • कई लाइनों को सुरक्षित रखने के लिए हर रीड के बाद वैरिएबल को प्रिंट या किसी array में स्टोर करना चाहिए।

Line-By-Line Reading और ओवरराइटिंग

  • पहला call → पहली लाइन वैरिएबल में।
  • दूसरा call → दूसरी लाइन ओवरराइट कर देगी।
  • लॉजिक: अगर आखिरी लाइन print करनी हो तो पहले सब लाइनें रीड करनी पड़ेंगी और आखिरी कॉल पर प्रिंट करना होगा।
  • बेहतर तरीका: हर रीड के बाद उसी समय वैरिएबल प्रिंट कर देना ताकि डेटा लॉस न हो।

फाइल ओपन मोड

  • पढ़ने के लिए फाइल को "for read" मोड में खोलें।
  • कीवर्ड कैपिटल में रखने की सलाह दी गयी (pseudo/teaching emphasis)।

अगर Lines की संख्या मालूम हो (fixed n)

  • यदि लाइन संख्या मालूम हो (जैसे 500 या 756), तो for loop index = 1 to n:
    • हर iteration में read file sample.txt, file_data
    • print file_data
  • loop खत्म होने के बाद file close करना जरूरी।

अगर Lines की संख्या नहीं मालूम → EOF का उपयोग

  • EOF (End Of File) marker हर टेक्स्ट फाइल के अंत में होता है।
  • हम while not EOF फॉर्मेट उपयोग करते हैं:
    • while not eof(sample.txt)
      • read file sample.txt, file_data
      • print file_data
    • end while
    • close file
  • eof() built-in function true/false रिटर्न करता है → EOF पहुंचा या नहीं।
  • not eof का मतलब: तब तक लूप चलाओ जब तक EOF नहीं आया।
  • इस तरीके में for loop इस्तेमाल करना उपयुक्त नहीं होता क्योंकि iteration count अनजान है।

Pseudo Code (core steps)

  • Open file in read mode.
  • Use while not eof(file):
    • read file, store in temporary variable.
    • print temporary variable (या array में append).
  • Close file after loop.

Music File Assignment (example प्रैक्टिस)

  • फाइल में हर लाइन में CD की जानकारी: title (40 chars), artist (40 chars), location (8 chars)।
  • यूजर से location इनपुट लेना है।
  • कार्य:
    • उस location से संबंधित हर लाइन ढूँढो।
    • हर मिले हुए रिकॉर्ड के लिए title और artist print करो (हर लाइन पर तुरंत प्रिंट करना है)।
    • कितने CDs उस location पर हैं, उसकी counting करके लूप के बाद आउटपुट दो।
  • टिप्स:
    • location की तुलना सही तरीके से करो (exact slicing/extraction)।
    • title और artist को हर मैच पर अंदर लूप print करना चाहिए, न कि लूप के बाहर।
    • एक location पर एक से ज्यादा CD हो सकती हैं, इसलिए counting लूप के बाहर print करो।
    • substring extraction के लिए सही function (जैसे LEFT, MID, RIGHT या MITE) सही जगह उपयोग करो।
    • indentation और loop boundaries का ध्यान रखना आवश्यक है।

Common Errors और सावधानियाँ

  • file_data वैरिएबल को हर बार ओवरराइट होता है — इसलिए रीड के तुरंत बाद प्रिंट करें या स्टोर करें।
  • title/artist को बाहर लूप में प्रिंट कर देना गलत है — इससे सिर्फ आखिरी रिकॉर्ड दिखेगा।
  • location extraction के लिए गलत function/indices उपयोग करना गलती है (उदाहरण: location के लिए LEFT/MID/RIGHT का सही इस्तेमाल करें)।
  • count को हर iteration में प्रिंट न करें; लूप के बाहर कुल संख्या प्रिंट करें।
  • indentation और loop के एंड/फाइल क्लोज़िंग पर ध्यान दें।
  • for loop तब उपयोग करें जब लाइन काउंट पता हो; अन्यथा while not eof बेहतर है।

Key Terms And Definitions

| शब्द | परिभाषा | | Read File | फ़ाइल से एक लाइन पढ़ने का ऑपरेशन; हर कॉल एक लाइन लौटाता है। | | EOF (End Of File) | फाइल के अंत का marker; EOF मिलने पर eof() true रिटर्न करता है। | | while not eof(...) | तब तक लूप चलाओ जब तक फाइल का अंत न पहुँच जाए। | | Overwriting | वही वैरिएबल हर रीड पर नई लाइन से रिप्लेस हो जाना। | | Initialization | वैरिएबल को आरम्भिक मान देना (जैसे count = 0)। | | Declaration | वैरिएबल का टाइप और नाम घोषित करना। |

Action Items / Next Steps (छात्रों के लिए)

  • sample.txt पढ़ने का छोटा प्रोग्राम लिखो: while not eof → read → print → close।
  • fixed-n के लिए for-loop वर्ज़न लिखकर परखा (उदाहरण: 500 या 756 lines)।
  • music file असाइनमेंट खुद से सॉल्व करो: location input लेकर matching records print और count आउटपुट करो।
  • कोड में indentation, file close और substring extraction का ध्यान रखकर अपना समाधान भेजो।
  • असाइनमेंट भेजने से पहले निम्न जाँचें:
    • title और artist हर मैच पर प्रिंट हो रहे हैं?
    • count लूप के बाद एक बार प्रिंट हो रहा है?
    • location extraction सही index/length से हो रहा है?
    • फाइल close किया गया है?

संक्षेप में

  • फाइल रीडिंग की बुनियादी विधि समझो: read file एक लाइन देता है, EOF का उपयोग तब करो जब लाइन संख्या नहीं मालूम।
  • हर रीड के बाद तुरंत प्रिंट करने या स्टोर करने से डेटा लॉस से बचते हैं।
  • प्रैक्टिस के लिए दिए गए music file और sample.txt के प्रोग्राम बनाकर भेजो।