कैसे आप का पता लगाने के EOF क्या आप धारा को पढ़ने के लिए उपयोग कर रहे हैं पर निर्भर करता है: निर्धारित करने के लिए
function result on EOF or error
-------- ----------------------
fgets() NULL
fscanf() number of succesful conversions
less than expected
fgetc() EOF
fread() number of elements read
less than expected
चेक उचित हालत के लिए इनपुट कॉल का परिणाम ऊपर है, तो feof()
फोन करता है, तो परिणाम वजह से था ईओएफ या कुछ अन्य त्रुटि मारने के लिए।
fgets()
का उपयोग करना:
char buffer[BUFFER_SIZE];
while (fgets(buffer, sizeof buffer, stream) != NULL)
{
// process buffer
}
if (feof(stream))
{
// hit end of file
}
else
{
// some other error interrupted the read
}
fscanf()
का उपयोग करना:
char buffer[BUFFER_SIZE];
while (fscanf(stream, "%s", buffer) == 1) // expect 1 successful conversion
{
// process buffer
}
if (feof(stream))
{
// hit end of file
}
else
{
// some other error interrupted the read
}
fgetc()
का उपयोग करना:
int c;
while ((c = fgetc(stream)) != EOF)
{
// process c
}
if (feof(stream))
{
// hit end of file
}
else
{
// some other error interrupted the read
}
fread()
का उपयोग करना:
char buffer[BUFFER_SIZE];
while (fread(buffer, sizeof buffer, 1, stream) == 1) // expecting 1
// element of size
// BUFFER_SIZE
{
// process buffer
}
if (feof(stream))
{
// hit end of file
}
else
{
// some other error interrupted read
}
ध्यान दें कि फ़ॉर्म उन सभी के लिए समान है: पढ़ने के ऑपरेशन के परिणाम की जांच करें; अगर यह असफल रहा, तो ईओएफ की जांच करें। ,
while(!feof(stream))
{
fscanf(stream, "%s", buffer);
...
}
यह फार्म रास्ता लोगों को लगता है यह करता है काम नहीं करता है क्योंकि feof()
तक के बाद आप का प्रयास किया है सच नहीं लौटेगा अंत अतीत को पढ़ने के लिए: आप की तरह उदाहरण के एक बहुत देखेंगे फाइल का नतीजतन, लूप एक बार बहुत अधिक निष्पादित करता है, जो आपको कुछ दुःख का कारण बन सकता है या नहीं।
अच्छा, लेकिन इस लोकप्रिय उत्तर के कुछ सुझाव: 1) "फ़ंक्शन: 'fscanf()' ईओएफ या त्रुटि पर परिणाम: अपेक्षित से कम सफल रूपांतरणों की संख्या" इनपुट इनपुट समतुल्य "त्रुटि प्रारूप प्रारूप विफलताओं के साथ। सही समूह नहीं है आईएमओ। एक और कॉलम ओटीओएच का सुझाव दें यह एक जटिल कार्य है 2) वर्तनी जांच 3) 'जबकि (खराब फीड (स्ट्रीम))' उदाहरण पर "खराब कोड" टिप्पणी का सुझाव दें। – chux