_getcwd
, _wgetcwd
Obtém o diretório de trabalho atual.
Sintaxe
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
Parâmetros
buffer
Local de armazenamento para o caminho.
maxlen
Comprimento máximo do caminho em caracteres: char
para _getcwd
e wchar_t
para _wgetcwd
.
Valor retornado
Retorna um ponteiro para buffer
. Um NULL
valor retornado indica um erro e errno
é definido como ENOMEM
, indicando que não há memória suficiente para alocar maxlen
bytes (quando um NULL
argumento é fornecido como buffer
), ou como ERANGE
, indicando que o caminho é maior que maxlen
os caracteres. Se maxlen
for menor ou igual a zero, essa função invocará um manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro.
Para obter mais informações sobre esses e outros códigos de retorno, confira errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Comentários
A função _getcwd
obtém o caminho completo do diretório de trabalho atual para a unidade padrão e o armazena em buffer
. O argumento inteiro maxlen
especifica o tamanho máximo para o caminho. Ocorrerá um erro se o comprimento do caminho (incluindo o caractere nulo de terminação) exceder maxlen
. O argumento buffer
pode ser NULL
; um buffer com tamanho de pelo menos maxlen
(mais somente se for necessário) será alocado automaticamente, usando malloc
, para armazenar o caminho. Esse buffer pode, posteriormente, ser liberado chamando free
e passando o valor retornado _getcwd
(um ponteiro para o buffer alocado).
_getcwd
retorna uma cadeia de caracteres que representa o caminho para o diretório de trabalho atual. Se o diretório de trabalho atual for raiz, a cadeia de caracteres terminará com uma barra invertida (\
). Se o diretório de trabalho atual for um diretório que não seja o raiz, a cadeia de caracteres terminará com o nome do diretório e não com uma barra invertida.
_wgetcwd
é uma versão caracteres largos de _getcwd
; o argumento buffer
e o valor de retorno de _wgetcwd
são cadeias de caracteres largos. Caso contrário, _wgetcwd
e _getcwd
se comportam de forma idêntica.
Quando _DEBUG
e _CRTDBG_MAP_ALLOC
são definidos, as chamadas para _getcwd
e _wgetcwd
são substituídas por chamadas para _getcwd_dbg
e _wgetcwd_dbg
, para permitir que você depure alocações de memória. Para obter mais informações, consulte _getcwd_dbg
e _wgetcwd_dbg
.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Mapeamentos de rotina de texto genérico
Rotina Tchar.h |
_UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
Requisitos
Rotina | Cabeçalho necessário |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> ou <wchar.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// 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
Confira também
Controle de diretório
_chdir
, _wchdir
_mkdir
, _wmkdir
_rmdir
, _wrmdir