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

WebCreator -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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
1
WebCreator
 
merci je vais tester sa tout de suite!
0
WebCreator
 
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
WebCreator
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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   Statut Contributeur Dernière intervention   1 846
 
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
WebCreator
 
merci mais je fais que du C moi pas du C++
:D
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ça tombe bien car tu peux l'utiliser en C :D
0