_getcwd
, _wgetcwd
Ottiene la directory di lavoro corrente.
Sintassi
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
Parametri
buffer
Posizione di archiviazione per il percorso.
maxlen
Lunghezza massima del percorso in caratteri: char
per _getcwd
e wchar_t
per _wgetcwd
.
Valore restituito
Restituisce un puntatore a buffer
. Un NULL
valore restituito indica un errore e errno
viene impostato su ENOMEM
, a indicare che memoria insufficiente per allocare maxlen
byte (quando un NULL
argomento viene specificato come buffer
) o su ERANGE
, a indicare che il percorso è più lungo dei maxlen
caratteri. Se maxlen
è minore o uguale a zero, questa funzione richiama un gestore di parametri non validi, come descritto in Convalida dei parametri.
Per altre informazioni su questi e altri codici restituiti, vedere errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Osservazioni:
La funzione _getcwd
ottiene il percorso completo della directory di lavoro corrente per l'unità predefinita e la archivia in buffer
. L'argomento Integer maxlen
specifica la lunghezza massima per il percorso. Si verifica un errore se la lunghezza del percorso (incluso il carattere Null di terminazione) supera maxlen
. L'argomento buffer
può essere NULL
. Viene allocato automaticamente un buffer con dimensione di almeno maxlen
(più grande solo se necessario) usando malloc
, per archiviare il percorso. Questo buffer può essere successivamente liberato chiamando free
e passandogli il valore restituito _getcwd
(un puntatore al buffer allocato).
_getcwd
restituisce una stringa che rappresenta il percorso della directory di lavoro corrente. Se la directory di lavoro corrente è la radice, la stringa termina con una barra rovesciata (\
). Se la directory di lavoro corrente è impostata su una directory diversa dalla quella radice, la stringa termina con il nome della directory e non con una barra rovesciata.
_wgetcwd
è una versione a caratteri wide di _getcwd
. L'argomento buffer
e il valore restituito da _wgetcwd
è dato da stringhe a caratteri wide. In caso contrario,_wgetcwd
e _getcwd
si comportano in modo identico.
Quando _DEBUG
e _CRTDBG_MAP_ALLOC
vengono definiti, le chiamate a _getcwd
e _wgetcwd
vengono sostituite da chiamate a _getcwd_dbg
e _wgetcwd_dbg
, per consentire di eseguire il debug delle allocazioni di memoria. Per altre informazioni, vedere _getcwd_dbg
e _wgetcwd_dbg
.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
Tchar.h routine |
_UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> oppure <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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
Vedi anche
Controllo directory
_chdir
, _wchdir
_mkdir
, _wmkdir
_rmdir
, _wrmdir