gpt4 book ai didi

c++ - GetCurrentDirectory 缓冲区未返回正确的值

转载 作者:可可西里 更新时间:2023-11-01 09:48:56 27 4
gpt4 key购买 nike

我对 GetCurrentDirectory() 有疑问,我不太明白为什么。我不明白的是它适用于 XP 但不适用于 7(或至少在我的计算机上)。这是我的代码:

char dir_name[1024]; // as a global variable
int get_files() {
// ...
DWORD dwRet;
dwRet = GetCurrentDirectory(MAX_PATH, dir_name);
printf("%s\n",dir_name);
printf("%d\n",dwRet);
//...
}

此代码将返回:

printf("%s\n",dir_name); -> return "c"

printf("%d\n",dwRet); -> 42(这是应该返回的字符串的正确长度)

我不明白为什么dir_name只取值“c”。

最佳答案

我想,结果就是 Windows 7 中的 Unicode!在这个函数的每个 ascii 字符之后都有零。您正在通过 printf 打印它。您应该在程序中使用宽字符函数。像 wprintf

试试下面的代码:(在 Visual Studio 2008 + Windows 7 中测试)

#include <stdio.h>
#include <windows.h>
#include <wchar.h>

WCHAR dir_name[1024]; // as a global variable

int get_files()
{
// ...
DWORD dwRet;
dwRet = GetCurrentDirectory(MAX_PATH, dir_name);
wprintf(L"%s\n", dir_name);
printf("%d\n", dwRet);
//...
return 0;
}

关于c++ - GetCurrentDirectory 缓冲区未返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8026996/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com