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/kmem
istnieje, ale większość procesów nie może go otworzyć nawet do odczytu. /etc/shadow
to 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")))