Apakah ada cara yang lebih baik daripada sekadar mencoba membuka file?
int exists(const char *fname)
{
FILE *file;
if ((file = fopen(fname, "r")))
{
fclose(file);
return 1;
}
return 0;
}
fopen()
/ fclose()
adalah bahwa Anda mungkin tidak dapat membuka file untuk dibaca meskipun sudah ada. Misalnya, /dev/kmem
ada, tetapi sebagian besar proses tidak dapat membukanya bahkan untuk membaca. /etc/shadow
adalah file lain seperti itu. Tentu saja, keduanya stat()
dan access()
bergantung pada dapat mengakses direktori yang berisi file; semua taruhan dibatalkan jika Anda tidak bisa melakukan itu (tidak ada izin eksekusi pada direktori yang berisi file).
if (file = fopen(fname, "r"))
akan memberi peringatan. Gunakan tanda kurung di sekitar pernyataan di dalam pernyataan ifif ((file = fopen(fname, "r")))