2012-02-01 16 views
5

जब एक फ़ाइल को पढ़ने, मैं समझता हूँ प्रदान की अंतिम अक्षर EOF है। अब, क्या होता है, जब मेरे पास उस फ़ाइल में EOF वर्ण है?मैं एक ईओएफ चरित्र, और फ़ाइल के वास्तविक अंत के बीच अंतर कैसे कर सकता हूं?

कैसे और EOF चरित्र मैं एक फ़ाइल के 'असली' अंत के बीच भेद करते हैं,?

+0

आप * * एक "EOF चरित्र" फ़ाइल में नहीं हो सकता। ऐसी कोई बात नहीं है –

+0

डॉस में वहां था, और अभी भी विंडोज़ में हो सकता है। Ctrl-Z, या ASCII मान 26. ऐसा एक ऐसा एप्लिकेशन जो अभी भी 'EOF' वर्णों वाली फ़ाइलों का उत्पादन करता है वह विश्लेषणात्मक समूह से WinQuery नामक एक उत्पाद है। – STLDeveloper

उत्तर

10

मैं एक जवाब के लिए मेरी टिप्पणी को स्थानांतरित करने का फैसला किया।

आपकी फ़ाइल में "ईओएफ चरित्र" नहीं हो सकता है क्योंकि ऐसी कोई चीज़ नहीं है। अंतर्निहित फाइल सिस्टम जानता है कि फ़ाइल में कितने बाइट हैं; यह जानने के लिए फ़ाइल की सामग्री पर निर्भर नहीं है कि अंत कहां है।

सी फ़ंक्शन जो आप EOF (-1) का उपयोग कर रहे हैं, लेकिन फ़ाइल फ़ाइल से नहीं पढ़ा गया था। यह वही तरीका है जो फ़ंक्शन आपको बताता है कि आप अंत तक पहुंच गए हैं। और क्योंकि -1 किसी भी चरित्र सेट में एक मान्य चरित्र नहीं है, कोई भ्रम नहीं है।

1

मान लीजिए कि आप सी, EOF -1 के बारे में बात कर रहे हैं, जो एक चरित्र नहीं है (इसलिए कोई भ्रम नहीं है)।

+0

तो, जब मैं एक फ़ाइल में एक 'EOF' चरित्र शब्दों में कहें, यह फ़ाइल के अंत के रूप में पंजीकृत नहीं होगा? – polemon

+2

ए 'char' एक बाइट (8 बिट मान) है, जबकि ईओएफ एक पूर्णांक है। ईओएफ चरित्र जैसी कोई चीज नहीं है और इस प्रकार आप एक फ़ाइल में नहीं डाल सकते हैं। – jdigital

4

आप इस प्रश्न के लिए कुछ संदर्भ की जरूरत है। विंडोज़ पर, वास्तविक "ईओएफ चरित्र" की पुरानी डॉस अवधारणा है - Ctrl-Z। वास्तव में "नकली" से "वास्तविक" को बताना संभव नहीं है; एक एम्बेडेड Ctrl-Z वाली एक फ़ाइल में एक प्रोग्राम के परिप्रेक्ष्य से कुछ पिछला छुपा डेटा होगा जो वास्तव में फ़ाइल वर्ण के अंत के रूप में Ctrl-Z की तलाश में है। अब इस तरह के कोड लिखने की कोशिश मत करो - यह जरूरी नहीं है।

पोर्टेबल सी एपीआई और यूनिक्स पर, 32-बिट -1 फ़ाइल के अंत को इंगित करने के लिए उपयोग किया जाता है, जो वैध 8 या 16-बिट वर्ण नहीं हो सकता है, इसलिए अंतर को बताना आसान है।

+0

एर्म, ठीक है, ऐसा लगता है कि मैंने 'ईओएफ' और 'ईओटी' को भ्रमित कर दिया है, जिसे मैंने मूल रूप से एक ही चीज़ माना था। Ctrl + D को अक्सर "फ़ाइल का अंत" कहा जाता है। – polemon