Sadece dosyayı açmaya çalışmaktan daha iyi bir yol var mı?
int exists(const char *fname)
{
FILE *file;
if ((file = fopen(fname, "r")))
{
fclose(file);
return 1;
}
return 0;
}
fopen()
/ fclose()
yöntemiyle ilgili yanlış olan bir şey, bir dosyayı var olmasına rağmen okumak için açamayabileceğinizdir. Örneğin, /dev/kmem
var, ancak çoğu süreç okumak için bile açamıyor. /etc/shadow
başka bir dosyadır. Tabii ki, her ikisi de stat()
ve access()
dosyayı içeren dizine erişebilmek güveniyor; bunu yapamazsanız tüm bahisler kapalıdır (dosyayı içeren dizinde yürütme izni yoktur).
if (file = fopen(fname, "r"))
bir uyarı verecektir. if ((file = fopen(fname, "r")))