Existe-t-il un meilleur moyen que d'essayer simplement d'ouvrir le fichier?
int exists(const char *fname)
{
FILE *file;
if ((file = fopen(fname, "r")))
{
fclose(file);
return 1;
}
return 0;
}
fopen()
/ fclose()
est que vous ne pourrez peut-être pas ouvrir un fichier en lecture même s'il existe. Par exemple, /dev/kmem
existe, mais la plupart des processus ne peuvent pas l'ouvrir même pour la lecture. /etc/shadow
est un autre de ces fichiers. Bien sûr, les deux stat()
et access()
dépendent de pouvoir accéder au répertoire contenant le fichier; tous les paris sont désactivés si vous ne pouvez pas le faire (aucune autorisation d'exécution sur le répertoire contenant le fichier).
if (file = fopen(fname, "r"))
donnera un avertissement. Utilisez des parenthèses autour de l'instruction à l'intérieur de l'instruction ifif ((file = fopen(fname, "r")))