_getcwd
, _wgetcwd
Obtiene el directorio de trabajo actual.
Sintaxis
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
Parámetros
buffer
Ubicación de almacenamiento de la ruta de acceso.
maxlen
Longitud máxima de la ruta de acceso en caracteres: char
para _getcwd
y wchar_t
para _wgetcwd
.
Valor devuelto
Devuelve un puntero a buffer
. Un NULL
valor devuelto indica un error y errno
se establece en ENOMEM
, lo que indica que no hay memoria suficiente para asignar maxlen
bytes (cuando se proporciona un NULL
argumento como buffer
), o a ERANGE
, lo que indica que la ruta de acceso es mayor maxlen
que los caracteres. Si maxlen
es menor o igual que cero, esta función invoca un controlador de parámetros no válido, como se describe en Validación de parámetros.
Para obtener más información sobre estos y otros códigos de retorno, vea errno
, _doserrno
, _sys_errlist
y _sys_nerr
.
Comentarios
La función _getcwd
obtiene la ruta de acceso completa del directorio de trabajo actual para la unidad predeterminada y la almacena en buffer
. El argumento de entero maxlen
especifica la longitud máxima de la ruta de acceso. Se produce un error si la longitud de la ruta de acceso (incluido el carácter nulo final) es mayor que maxlen
. La función buffer
puede ser NULL
; se asigna automáticamente un búfer con un tamaño mínimo de maxlen
(más solo en caso necesario) mediante malloc
, para almacenar la ruta de acceso. Este búfer se puede liberar más adelante llamando a free
y pasando el valor devuelto de _getcwd
(un puntero al búfer asignado).
_getcwd
devuelve una cadena que representa la ruta de acceso del directorio de trabajo actual. Si el directorio de trabajo actual es la raíz, la cadena finaliza con una barra diagonal inversa (\
). Si el directorio de trabajo actual es un directorio distinto de la raíz, la cadena finaliza con el nombre de directorio y no con una barra diagonal inversa.
_wgetcwd
es una versión con caracteres anchos de _getcwd
; el argumento de buffer
y el valor devuelto de _wgetcwd
son cadenas de caracteres anchos. Por lo demás,_wgetcwd
y _getcwd
se comportan de forma idéntica.
Cuando _DEBUG
se definen y _CRTDBG_MAP_ALLOC
, las llamadas a _getcwd
y _wgetcwd
se reemplazan por llamadas a _getcwd_dbg
y _wgetcwd_dbg
, para permitirle depurar asignaciones de memoria. Para más información, vea _getcwd_dbg
, _wgetcwd_dbg
.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Asignaciones de rutinas de texto genérico
Rutina Tchar.h |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
Requisitos
Routine | Encabezado necesario |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// 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
Vea también
Control de directorio
_chdir
, _wchdir
_mkdir
, _wmkdir
_rmdir
, _wrmdir