NilObject के कोड के आधार पर:
#include
off_t fsize(const char *filename) {
struct stat st;
if (stat(filename, &st) == 0)
return st.st_size;
return -1;
}
परिवर्तन:
- फ़ाइल नाम तर्क को
const char
बनाया।
-
struct stat
परिभाषा को ठीक किया गया, जो परिवर्तनीय नाम गुम था।
-
0
की बजाय त्रुटि पर -1
लौटाता है, जो एक खाली फ़ाइल के लिए संदिग्ध होगा। off_t
एक हस्ताक्षरित प्रकार है इसलिए यह संभव है।
यदि आप त्रुटि पर संदेश मुद्रित करने के लिए fsize()
चाहते हैं, तो आप इसका उपयोग कर सकते हैं:
#include
#include
#include
#include
off_t fsize(const char *filename) {
struct stat st;
if (stat(filename, &st) == 0)
return st.st_size;
fprintf(stderr, "Cannot determine size of %s: %s\n",
filename, strerror(errno));
return -1;
}
32-बिट सिस्टम पर आपको इसे -D_FILE_OFFSET_BITS = 64
विकल्प के साथ संकलित करना चाहिए, अन्यथा off_t
केवल 2 जीबी तक मान रखेगा। विवरण के लिए लिनक्स में बड़े फ़ाइल समर्थन के "LFS का उपयोग करना" अनुभाग देखें।