online draft n1256, 17.9.1.3 से प्राप्त :
EOF
जो टाइप इंट और ऋणात्मक मान, के साथ एक पूर्णांक स्थिर अभिव्यक्ति का विस्तार करता है जो कई कार्यों द्वारा अंत-फ़ाइल इंगित करने के लिए वापस किया जाता है, यानी, स्ट्रीम से इनपुट नहीं;
ईओएफ हमेशा नकारात्मक होता है, हालांकि यह हमेशा -1 नहीं हो सकता है।
इस तरह की समस्या के लिए, मैं फ़ंक्शन द्वारा दिया गया मान के रूप में एक त्रुटि कोड (SUCCESS
, END_OF_FILE
, READ_ERROR
, आदि) लौट रहा है, और फिर इस तरह के रूप में अलग मानकों के हित के लिए डेटा लिख कर डेटा से त्रुटि की स्थिति को अलग पसंद करते हैं
int getNextWord (FILE *stream, char *buffer, size_t bufferSize, int *lineNumber)
{
if (!fgets(buffer, bufferSize, stream))
{
if (feof(stream)) return END_OF_FILE; else return READ_ERROR;
}
else
{
// figure out the line number
*lineNumber = ...;
}
return SUCCESS;
}
स्रोत
2009-10-26 18:34:47
आपको अपने स्वयं के फ़ंक्शन से ईओएफ वापस करने की आवश्यकता क्यों है? बस अपने फ़ंक्शन को परिभाषित करें "शब्द पंक्ति को लौटाता है जहां शब्द मिला था, या -1 यदि इनपुट का अंत पहुंचा था"। उस ने कहा, विफलता कोड के साथ वापसी मूल्यों के मिश्रण के खिलाफ कई स्रोत (उदा। कोड पूर्ण) सावधानी। –
सही, यह एक संभावित और पूरी तरह व्यवहार्य विकल्प है। हालांकि, मैंने सोचा कि ईओएफ अधिक स्पष्ट होगा। – Ree