Partilhar via


_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_dbge _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