Comment obtenir le répertoire courant dans un programme C?
je fais un programme C où j'ai besoin d'obtenir le répertoire d'où 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 courant dans une chaîne (tableau char)?
5 réponses
avez-vous eu un oeil à getcwd()
?
#include <unistd.h>
char *getcwd(char *buf, size_t size);
exemple Simple:
#include <unistd.h>
#include <stdio.h>
#include <limits.h>
int main() {
char cwd[PATH_MAX];
if (getcwd(cwd, sizeof(cwd)) != NULL) {
printf("Current working dir: %s\n", cwd);
} else {
perror("getcwd() error");
return 1;
}
return 0;
}
bien que la question soit étiquetée Unix, les gens ont également la possibilité de la visiter lorsque leur plate-forme cible est Windows, et la réponse pour Windows est la fonction GetCurrentDirectory()
DWORD WINAPI GetCurrentDirectory(
_In_ DWORD nBufferLength,
_Out_ LPTSTR lpBuffer
);
ces réponses s'appliquent à la fois au code C et au code C++.
Lien proposé par user4581301 dans un commentaire à une autre question, et vérifié que le courant de premier choix avec un Recherche sur Google "site:microsoft.com getcurrentdirectory".
#include <stdio.h> /* defines FILENAME_MAX */
//#define WINDOWS /* uncomment this line to use it for windows.*/
#ifdef WINDOWS
#include <direct.h>
#define GetCurrentDir _getcwd
#else
#include <unistd.h>
#define GetCurrentDir getcwd
#endif
int main(){
char buff[FILENAME_MAX];
GetCurrentDir( buff, FILENAME_MAX );
printf("Current working dir: %s\n", buff);
return 1;
}
notez que getcwd(3)
est également disponible dans la libc de Microsoft: getcwd(3) , et fonctionne de la même manière que vous vous y attendiez.
doit être lié à -loldnames
(oldnames.lib, qui est fait automatiquement dans la plupart des cas), ou utiliser _getcwd()
. La version non corrigée n'est pas disponible sous Windows RT.