J'ai un programme de console assez basique ici, pour déterminer si un dossier ou un fichier existe ou non à l'aide stat
:C++ - stat(), accès() ne fonctionne pas dans gcc gnu
#include <iostream>
#include <sys/stat.h>
using namespace std;
int main() {
char path[] = "myfolder/";
struct stat status;
if(stat(path,&status)==0) { cout << "Folder found." << endl; }
else { cout << "Can't find folder." << endl; } //Doesn't exist
cin.get();
return 0;
}
Je aussi essayé la version access
:
#include <iostream>
#include <io.h>
using namespace std;
int main() {
char path[] = "myfolder/";
if(access(path,0)==0) { cout << "Folder found." << endl; }
else { cout << "Can't find folder." << endl; } //Doesn't exist
cin.get();
return 0;
}
Aucun d'entre eux trouvent mon dossier (ce qui est là dans le même répertoire que le programme). Ceux-ci ont travaillé sur mon dernier compilateur (celui par défaut avec DevCpp). Je suis passé à CodeBlocks et je compile maintenant avec Gnu GCC, si cela peut vous aider. Je suis sûr que c'est une solution rapide - quelqu'un peut-il aider?
(Évidemment, je suis un noob à ce sujet, donc si vous avez besoin d'autres informations que j'ai omises s'il vous plaît faites le moi savoir).
MISE À JOUR
Le problème était avec le répertoire de base. La mise à jour, le programme de travail est la suivante:
#include <iostream>
#include <sys/stat.h>
using namespace std;
int main() {
cout << "Current directory: " << system("cd") << endl;
char path[] = "./bin/Release/myfolder";
struct stat status;
if(stat(path,&status)==0) { cout << "Directory found." << endl; }
else { cout << "Can't find directory." << endl; } //Doesn't exist
cin.get();
return 0;
}
une mise à jour
Transforme qu'une barre oblique inverse sur le chemin est gros problème.
Appel perror (NULL) après l'échec, il pourrait gi Vous avez une idée. Aussi, je pense que vous devez passer des drapeaux à access() au lieu de 0, mais je ne sais pas pourquoi stat échoue. – ergosys
Cela a fonctionné quand j'ai compilé avec DevCpp:/alors je pense que la syntaxe est OK ... – Ben
Remettant la balise C parce que, malgré l'utilisation d'iostream, le cœur de la question se rapporte plutôt à C. – paxdiablo