क्या फ़ाइल खोलने की कोशिश करने से बेहतर तरीका है?
int exists(const char *fname)
{
FILE *file;
if ((file = fopen(fname, "r")))
{
fclose(file);
return 1;
}
return 0;
}
fopen()
/ fclose()
विधि के साथ गलत है, वह यह है कि आप मौजूद होने के बावजूद पढ़ने के लिए एक फ़ाइल खोलने में सक्षम नहीं हो सकते हैं। उदाहरण के लिए, /dev/kmem
मौजूद है, लेकिन अधिकांश प्रक्रियाएं इसे पढ़ने के लिए भी नहीं खोल सकती हैं। /etc/shadow
ऐसी दूसरी फाइल है। बेशक, दोनों stat()
और access()
फ़ाइल युक्त निर्देशिका तक पहुंचने में सक्षम होने पर भरोसा करते हैं; यदि आप ऐसा नहीं कर सकते हैं तो सभी दांव बंद हो गए हैं (फ़ाइल युक्त निर्देशिका पर कोई अनुमति निष्पादित नहीं)।
if (file = fopen(fname, "r"))
चेतावनी देगा। इफ-स्टेटमेंट के अंदर विवरण के चारों ओर कोष्ठक का प्रयोग करेंif ((file = fopen(fname, "r")))