Tester l'existance d'un répertoire [C]

Fermé
WebCreator - 10 juil. 2012 à 16:12
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 11 juil. 2012 à 07:20
Bonjour,

J'ai eu beau chercher toute après-midi, j'ai rien trouvé. Alors avez vous un script en C qui teste l'existence d'un répertoire comme : c:/ ; d:/ ; e:/ ; f:/ ; g:/ ...

Merci d'avance!
A voir également:

2 réponses

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 10/07/2012 à 17:17
Salut,

Tu peux faire comme cela :

#include <sys/stat.h> 

int main(int argc, char **argv) 
{ 
    struct stat  file_stat; 

    if (stat("c:\\",&file_stat) < 0) 
        return 1; 

    return 0; 
}

Dal
0
merci je vais tester sa tout de suite!
0
Re

alors si j'ai bien compris :
si stat("c:\\",&file_stat) < 0 -> le répertoire existe
else -> le répertoire n'existe pas

doit-je donner une valeur a : file_stat ?

merci
0
dsl je me suis trompé c'est l'inverse!
et apparemment il n'y a pas de valeur a donné pour file_stat.
mon script finale:
#include <sys/stat.h> 
int main(int argc, char *argv[])
{
struct stat  file_stat; 
if (stat("c:\\",&file_stat) < 0){printf("Le repertoire c:\ n\'existe pas!! :(\n");}
else {printf("Le repertoire c:\ existe! :D\n");}
    return 0;
}

merci beaucoup!
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
10 juil. 2012 à 18:22
stat est une fonction du POSIX C, il y a sûrement des solutions plus adaptées à Windows.

Elle définie ici :

https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html

Si elle retourne -1, c'est qu'elle n'a pas pu accéder à la ressource.

file_stat est une structure stat. Son contenu est peuplé par la fonction stat si la ressource est accessible.

Dans l'exemple de code donné ci-dessus
if (stat("c:\\",&file_stat) < 0) return 1;
signifie je sors de main avec la valeur de retour 1 si "c:\" n'existe pas.


Dal
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
10 juil. 2012 à 19:53
Bonjour,

Rien de standard.

En POSIX : DIR *opendir (const char *name) ou int stat(const char *file_name, struct stat *buf);

Pour l'API Win :
BOOL PathFileExists(LPCTSTR pszPath);
https://docs.microsoft.com/en-us/windows/win32/api/shlwapi/nf-shlwapi-pathfileexistsa?redirectedfrom=MSDN

Cdlt,
0
merci mais je fais que du C moi pas du C++
:D
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
11 juil. 2012 à 07:20
Ça tombe bien car tu peux l'utiliser en C :D
0