我需要读取Windows 7中当前目录,该目录与当前使用的语言环境不同。所以我想使用GetCurrentDirectoryW(),因为它与unicode兼容,使用wchar_t *。但是,我需要使用现有的API,因此我需要将其转换为char *。为此,我使用了wcstombs()函数。但是,转换没有正确进行。下面是我使用的代码:
wchar_t w_currentDir[MAX_PATH + 100];
char currentDir[MAX_PATH + 100];
GetCurrentDirectoryW(MAX_PATH, w_currentDir);
wcstombs (currentDir, w_currentDir, MAX_PATH + 100);
printf("%s \n", currentDir);
我当前的目录是C:\特斯塔敌人。转换完成后,只有完整路径的'C:\'部分才能正确转换为char *。其他字符不是,它们是垃圾值。我正在使用这种方法有什么问题?我怎么能纠正这个?
谢谢!
答案 0 :(得分:1)
问题是没有适当的转换。宽字符可能没有常规字符等效(这就是为什么wchar
存在的原因。所以你应该使用wprintf
:
GetCurrentDirectoryW(MAX_PATH, w_currentDir);
wprintf("%s \n", w_currentDir);