_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