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/kmemvar, ancak çoğu süreç okumak için bile açamıyor. /etc/shadowbaş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")))