_getcwd
, _wgetcwd
Возвращает текущий рабочий каталог.
Синтаксис
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
Параметры
buffer
Место хранения пути.
maxlen
Максимальная длина пути в символах: char
для _getcwd
и wchar_t
для _wgetcwd
.
Возвращаемое значение
Возвращает указатель на buffer
. NULL
Возвращаемое значение указывает на ошибку и errno
имеет ENOMEM
значение < a0/>, указывающее, что недостаточно памяти для выделения maxlen
байтов (при указании аргумента NULL
как buffer
), либо ERANGE
для обозначения того, что путь длиннее maxlen
символов. Если maxlen
значение равно нулю, эта функция вызывает недопустимый обработчик параметров, как описано в разделе проверки параметров.
Дополнительные сведения об этих и других кодах возврата см. в разделе errno
, _doserrno
и _sys_nerr
_sys_errlist
.
Замечания
Функция _getcwd
получает полный путь текущего рабочего каталога для диска по умолчанию и сохраняет его в параметре buffer
. Целочисленный аргумент maxlen
указывает максимальную длину пути. Ошибка возникает, если длина пути (включая завершающий символ NULL) превышается maxlen
. Аргумент buffer
может иметь значение NULL
. С помощью malloc
автоматически выделяется буфер минимального размера maxlen
(больше только при необходимости) для сохранения пути. Позже этот буфер можно освободить путем вызова free
и передачи в него возвращаемого значения _getcwd
(указателя на выделенный буфер).
_getcwd
возвращает строку, представляющую путь к текущему рабочему каталогу. Если текущий рабочий каталог является корнем, строка заканчивается обратной косой чертой (\
). Если текущий рабочий каталог отличается от корневого, строка заканчивается именем каталога, а не обратной косой чертой.
_wgetcwd
— это версия с расширенными символами для _getcwd
; аргумент buffer
и возвращаемое значение _wgetcwd
являются строками с расширенными символами. Поведение_wgetcwd
и _getcwd
идентично в противном случае.
Когда _DEBUG
и _CRTDBG_MAP_ALLOC
определяются, вызовы и _wgetcwd
заменяются вызовами _getcwd
_getcwd_dbg
и _wgetcwd_dbg
позволяют выполнять отладку выделения памяти. Дополнительные сведения см. в разделе _getcwd_dbg
, _wgetcwd_dbg
.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
Tchar.h рутина |
_UNICODE и _MBCS не определен |
_MBCS Определенные |
_UNICODE Определенные |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
Требования
Маршрут | Обязательный заголовок |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// 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
См. также
Элемент управления каталогом
_chdir
, _wchdir
_mkdir
, _wmkdir
_rmdir
, _wrmdir