Je crée un programme C où j'ai besoin d'obtenir le répertoire à partir duquel le programme est démarré. Ce programme est écrit pour les ordinateurs UNIX. J'ai regardé opendir()
et telldir()
, mais telldir()
renvoie un off_t (long int)
, donc ça ne m'aide vraiment pas.
Comment puis-je obtenir le chemin actuel dans une chaîne (tableau de caractères)?
c
unix
working-directory
CharlesB
la source
la source
int main()
devrait êtreint main(void)
.char cwd[PATH_MAX+1]
. Ou si vous ne pouvez pas être dérangé par les tampons justechar *buf=getcwd(NULL,0);
et quand vous avez terminéfree(buf)
(à partir de POSIX.1-2001)Recherchez dans la page de manuel
getcwd
.la source
man 3 getcwd
. Blagues à part, ne soyez pas anarchoniste, cet article date de '08, les conventions SO étaient différentes.Bien que la question soit étiquetée Unix, les gens peuvent également la visiter lorsque leur plate-forme cible est Windows, et la réponse pour Windows est la
GetCurrentDirectory()
fonction:Ces réponses s'appliquent à la fois au code C et C ++.
Lien suggéré par l' utilisateur4581301 dans un commentaire à une autre question, et vérifié comme premier choix actuel avec une recherche Google "site: microsoft.com getcurrentdirectory".
la source
la source
Notez qu'il
getcwd(3)
est également disponible dans la libc de Microsoft: getcwd (3) et fonctionne de la même manière que vous vous attendez.Doit être lié à
-loldnames
(oldnames.lib, ce qui est fait automatiquement dans la plupart des cas), ou utiliser_getcwd()
. La version sans préfixe n'est pas disponible sous Windows RT.la source
Pour obtenir le répertoire actuel (dans lequel vous exécutez votre programme cible), vous pouvez utiliser l'exemple de code suivant, qui fonctionne à la fois pour Visual Studio et Linux / MacOS (gcc / clang), à la fois C et C ++:
la source