다음을 통해 공유


_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 바이트를 할당 maxlenENOMEM메모리가 부족함을 나타내거나ERANGE(인수가 지정된 경우NULL) 경로가 문자보다 maxlen 길다는 것을 나타내는 값으로 buffer설정됩니다. 0보다 작거나 같은 경우 maxlen 이 함수는 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다.

이러한 코드 및 기타 반환 코드에 대한 자세한 내용은 , _doserrno_sys_nerr_sys_errlist를 참조하세요.errno

설명

_getcwd 함수는 기본 드라이브에 대한 현재 작업 디렉터리의 전체 경로를 가져오고 buffer에 저장합니다. 정수 인수 maxlen 은 경로의 최대 길이를 지정합니다. 경로의 길이(null 종결 문자 포함)가 maxlen자입니다. buffer 인수는 NULL일 수 있으며, maxlen 크기 이상의 버퍼(필요한 경우에만)가 malloc를 사용하여 자동으로 할당되어 경로를 저장합니다. 나중에 이 버퍼는 free 를 호출하고 _getcwd 반환 값(할당된 버퍼에 대한 포인터)으로 전달하여 해제할 수 있습니다.

_getcwd 는 현재 작업 디렉터리의 경로를 나타내는 문자열을 반환합니다. 현재 작업 디렉터리가 루트이면 문자열은 백슬래시(\)로 끝납니다. 현재 작업 디렉터리가 루트 이외의 디렉터리이면 문자열은 백슬래시가 아닌 디렉터리 이름으로 끝납니다.

_wgetcwd_getcwd의 와이드 문자 버전이고, buffer 인수와 _wgetcwd 의 반환 값은 와이드 문자 문자열입니다. 그렇지 않으면_wgetcwd_getcwd 이 동일하게 작동합니다.

_CRTDBG_MAP_ALLOC 정의되는 경우 _DEBUG 호출은 _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