Чи є кращий спосіб, ніж просто намагатися відкрити файл?
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 (if)if ((file = fopen(fname, "r")))