_getcwd
, _wgetcwd
Obtient le répertoire de travail actuel.
Syntaxe
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
Paramètres
buffer
Emplacement de stockage pour le chemin.
maxlen
Longueur maximale du chemin d'accès en caractères : char
pour _getcwd
et wchar_t
pour _wgetcwd
.
Valeur retournée
Retourne un pointeur vers buffer
. Une NULL
valeur de retour indique une erreur et errno
est définie ENOMEM
sur , indiquant qu’il n’y a pas de mémoire suffisante pour allouer des maxlen
octets (lorsqu’un NULL
argument est donné en tant que buffer
), ou à ERANGE
, indiquant que le chemin d’accès est plus long que les maxlen
caractères. Si maxlen
elle est inférieure ou égale à zéro, cette fonction appelle un gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres.
Pour plus d’informations sur ces codes de retour et d’autres codes de retour, consultez , , _sys_errlist
_doserrno
et _sys_nerr
.errno
Notes
La fonction _getcwd
obtient le chemin complet du répertoire de travail actuel pour le lecteur spécifié et le stocke dans buffer
. L’argument entier maxlen
spécifie la longueur maximale du chemin. Une erreur se produit si la longueur du chemin (y compris le caractère null de fin) dépasse maxlen
. La fonction buffer
peut être NULL
; une mémoire tampon d’une taille d’au moins maxlen
(plus seulement si nécessaire) est allouée automatiquement, en utilisant malloc
, pour stocker le chemin. Cette mémoire tampon ultérieurement peut être libérée en appelant free
et en lui passant la valeur de retour _getcwd
(un pointeur vers la mémoire tampon allouée).
_getcwd
retourne une chaîne qui représente le chemin du répertoire de travail actuel. Si le répertoire de travail actuel est la racine, la chaîne se termine par une barre oblique inverse (\
). Si le répertoire de travail actuel est un répertoire autre que la racine, la chaîne se termine par le nom du répertoire, et non pas par une barre oblique inverse.
_wgetcwd
est une version à caractères larges de _getcwd
; l’argument buffer
et la valeur de retour de _wgetcwd
sont des chaînes à caractères larges. Sinon,_wgetcwd
et _getcwd
se comportent de la même façon.
Quand _DEBUG
et _CRTDBG_MAP_ALLOC
sont définis, les appels vers _getcwd
et _wgetcwd
sont remplacés par des appels à _getcwd_dbg
et _wgetcwd_dbg
, pour vous permettre de déboguer des allocations de mémoire. Pour plus d’informations, consultez _getcwd_dbg
, _wgetcwd_dbg
.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Mappages de routines de texte générique
Routine Tchar.h |
_UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
Spécifications
Routine | En-tête requis |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> ou <wchar.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_getcwd.c
// Compile with: cl /W4 crt_getcwd.c
// This program places the name of the current directory in the
// buffer array, then displays the name of the current directory
// on the screen. Passing NULL as the buffer forces getcwd to allocate
// memory for the path, which allows the code to support file paths
// longer than _MAX_PATH, which are supported by NTFS.
#include <direct.h> // _getcwd
#include <stdlib.h> // free, perror
#include <stdio.h> // printf
#include <string.h> // strlen
int main( void )
{
char* buffer;
// Get the current working directory:
if ( (buffer = _getcwd( NULL, 0 )) == NULL )
perror( "_getcwd error" );
else
{
printf( "%s \nLength: %zu\n", buffer, strlen(buffer) );
free(buffer);
}
}
C:\Code
Voir aussi
Contrôle d’annuaire
_chdir
, _wchdir
_mkdir
, _wmkdir
_rmdir
, _wrmdir