_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
바이트를 할당 maxlen
할 ENOMEM
메모리가 부족함을 나타내거나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