gpt4 book ai didi

找不到指定的路径: CreateDirectoryW

转载 作者:行者123 更新时间:2023-11-30 18:53:21 25 4
gpt4 key购买 nike

VS2015,Unicode:在列表框中运行以下代码时出现“无法找到指定的路径”错误:

wchar_t *currPath, *cumPath;
int listTotal = 5;
int pathLength = 32760;
listTotal = SendMessageW(hList, LB_GETCOUNT, 0, 0);
wcscpy_s(cumPath, pathLength, L"\\\\?\\C:\\");
//wcscpy_s(cumPath, pathLength, L"C:\\"); //Tried this, no difference
wcscpy_s(currPath, MAX_PATH - 3, L"");
for (int i = 0; i < listTotal; i++) {
SendMessageW(hList, LB_GETTEXT, i, (LPARAM) currPath); //"My Nested Path" picked up from textbox OK
wcscat_s(cumPath, pathLength, (wchar_t *) currPath);
\\OK but doubled backslashes
wcscat_s(cumPath, MAX_PATH - 3, __TEXT("\\"));
\\appear in debugger variable contents
}
int errorcode = CreateDirectoryW(cumPath, NULL);
if (errorcode == 0) {
ErrorExit(TEXT("CreateDirectoryW"));
//GetLastError courtesy [MSDN][1]

}

Meh,我在这里错过了一些基本的东西吗?
双反斜杠不会从变量名称中解析出来。有没有一种方法可以使用与 TEXT 或 L 结合使用的逐字或“原样”前缀来构造宏?

Edit1以下两行位于代码之前:

currPath = (wchar_t *)calloc(pathLength, sizeof(wchar_t));
cumPath = (wchar_t *)calloc(pathLength, sizeof(wchar_t));

这两个变量都在模块范围内声明。 但是,在进入此子之前有:

 currPath = (wchar_t *)calloc(pathLength, sizeof(wchar_t));
...
free(currPath);

currPath 的“重新调用”会扰乱什么吗?

Edit2:不,尝试使用另一个变量。 CreateDirectoryW之前​​的cumPath值是否符合预期?

cumPath = 0x005b4fe8 L"\\\\?\\C:\\My Nested Path\\My Nested Path\\My Nested Path\\My Nested Path\\My Nested Path\\"

Eureka !注释掉这一行,该函数起作用了!

  //wcscat_s(cumPath, MAX_PATH - 3, __TEXT("\\"));

但现在没有嵌套目录,正如最初的要求。

cumPath = 0x00644fe8 L"\\?\C:\My Nested PathMy Nested PathMy Nested PathMy Nested PathMy Nested Path"

最佳答案

第一个问题是 cumPath 没有指向任何分配的内存。

并且 wcscpy_s() 函数期望目标是一个足够大以容纳源字节的字符数组

这里是 wcscpy() 手册页的相关摘录

描述 wcscpy() 函数是 strcpy(3) 的宽字符等效函数 功能。它复制 src 指向的宽字符串, 包括终止空宽字符 (L'\0') 到数组 由 dest 指向。

   The strings may not overlap.

The programmer must ensure that there is room for at least
wcslen(src)+1 wide characters at dest.

关于找不到指定的路径: CreateDirectoryW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018732/

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