_getcwd, _wgetcwd
获取当前工作目录。
重要
此 API 不能在运行时的窗口执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW。
char *_getcwd(
char *buffer,
int maxlen
);
wchar_t *_wgetcwd(
wchar_t *buffer,
int maxlen
);
参数
buffer
路径的存储位置。maxlen
路径的最大长度的字符:_getcwd 的 _wgetcwd的 char 和 wchar_t。
返回值
返回指向 buffer 的指针。 NULL 返回值指示错误,并且,errno 设置为任一对 ENOMEM,指示有分配内存不足 maxlen 字节 (在 NULL 参数是作为 buffer) 时,或对 ERANGE,指示路径比 maxlen 字符长度。 如果 maxlen 小于或等于零,此函数调用无效参数处理程序,如 参数验证所述。
有关这些属性和其他的更多信息返回代码示例,请参见 _doserrno、errno、_sys_errlist 和_sys_nerr。
备注
_getcwd 函数获取当前工作目录的完整路径默认驱动程序并将其存储在 buffer。 整数参数 maxlen 对路径指定最大长度。 错误,如果路径的长度 (包括终止 null 字符) 超过 maxlen*。*buffer 参数可以为 NULL;至少范围 maxlen 缓冲区 (仅限如果需要),使用 malloc,自动指派,存储路径。 此缓冲区可以通过调用 free 后释放,并将其 _getcwd 返回值 (对于分配的缓冲区的指针)。
_getcwd 返回表示当前工作目录路径的字符串。 如果当前工作目录是根,该字符串以反斜杠 ( \ ) 结束。 以外,如果当前工作目录是内容,该字符串结尾。目录名和不是杠。
_wgetcwd 是 _getcwd的宽字符版本;buffer 参数和返回 _wgetcwd 的值是宽字符字符串。 _wgetcwd 和 _getcwd 否则具有相同的行为。
当 _DEBUG 和 _CRTDBG_MAP_ALLOC 定义时,对 _getcwd,并 _wgetcwd 替换调用 _getcwd_dbg 和 _wgetcwd_dbg 允许调试内存分配。 有关更多信息,请参见 _getcwd_dbg,_wgetcwd_dbg。
一般文本例程映射
Tchar.h 实例 |
未定义的_UNICODE 和_MBCS |
定义的_MBCS |
定义的_UNICODE |
---|---|---|---|
_tgetcwd |
_getcwd |
_getcwd |
_wgetcwd |
要求
实例 |
必需的标头 |
---|---|
_getcwd |
<direct.h> |
_wgetcwd |
<direct.h> 或 <wchar.h> |
有关更多兼容性信息,请参见中介绍的 兼容性。
示例
// 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>
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char* buffer;
// Get the current working directory:
if( (buffer = _getcwd( NULL, 0 )) == NULL )
perror( "_getcwd error" );
else
{
printf( "%s \nLength: %d\n", buffer, strnlen(buffer) );
free(buffer);
}
}
.NET Framework 等效项
System::Environment::CurrentDirectory