关于 c :GetCurrentDirectory() 只检索磁盘名称

GetCurrentDirectory() only retrieve disk name

本问题已经有最佳答案,请猛点这里访问。

我一直在做一些 C 编程,但偶然发现了一个奇怪的行为,
每当我尝试使用 GetCurrentDirectory() 获取当前目录时,它只会返回当前磁盘的字母。

这是代码:

1
2
3
4
TCHAR path[MAX_PATH + 1] = L"";
DWORD len = GetCurrentDirectory(MAX_PATH, path);

cout << (char *)path;

这是输出:

1
Z

因为我的项目在我的 Z:\\\\ 磁盘中

我想知道它是否与缓冲区大小有关,但我将其设置为 MAX_PATH,甚至尝试将其设置为 1024。


cout << (char *)path 中的 (char *) 类型转换使编译器认为 path 指向一个 char,但它实际上指向一个 wchar_t

你想要这个(使用 GetCurrentDirectory 的多字节字符版本(因此 GetCurrentDirectory 中的 A):

1
2
3
char path[MAX_PATH + 1] ="";
DWORD len = GetCurrentDirectoryA(MAX_PATH, path);
cout << path;

或者这个(推荐):

1
2
3
wchar_t path[MAX_PATH + 1] = L"";
DWORD len = GetCurrentDirectoryW(MAX_PATH, path);
wcout << path;