Czy istnieje lepszy sposób niż próba otwarcia pliku?
int exists(const char *fname)
{
FILE *file;
if ((file = fopen(fname, "r")))
{
fclose(file);
return 1;
}
return 0;
}
fopen()/ fclose()jest to, że możesz nie być w stanie otworzyć pliku do odczytu, nawet jeśli on istnieje. Na przykład /dev/kmemistnieje, ale większość procesów nie może go otworzyć nawet do odczytu. /etc/shadowto kolejny taki plik. Oczywiście zarówno stat()i access()polegają na możliwości uzyskania dostępu do katalogu zawierającego plik; wszystkie zakłady są wyłączone, jeśli nie możesz tego zrobić (brak uprawnień do wykonania w katalogu zawierającym plik).
if (file = fopen(fname, "r"))da ostrzeżenie. Użyj nawiasów wokół instrukcji wewnątrz instrukcji ifif ((file = fopen(fname, "r")))