0

在 Visual Studio 的 C++ 中,我试图使用循环动态复制文件夹。为此,我使用sprintf函数来更改文件夹,如下所示:

char sourceName[1000];
char dstName[1000];
SHFILEOPSTRUCT sf;
memset(&sf, 0, sizeof(sf));
sf.hwnd = 0; 
sf.wFunc = FO_COPY;

for (int i=1; i<100; i++)
{
    sprintf(sourceName, "C://Samples//%d//",i);
    sprintf(dstName, "U://NewData//%d//",i);
    sf.pFrom = sourceName;
    sf.pTo = dstName;
}

但是 sf.pFrom 和 sf.pTo 的行给出了错误消息:

Error: a value of type "char*" cannot be assigned to an entity of type PCZZWSTR. 

我在声明它们时尝试将 sourceName 和 dstName 更改为 PCZZWSTR 类型:

PCZZWSTR sourceName;
PCZZWSTR dstName;

但是这次 sprintf 函数不接受它们。那么有什么解决方案吗?提前致谢。

4

1 回答 1

3

我在您的代码中看到了几个问题。

  1. 首先,删除文件名中的双斜杠'//'。只需要将反斜杠加倍,就像'\'转义字符一样。
  2. 使用wsprintf而不是sprintf. 使用wchar_ts 代替chars。
  3. 阅读SHFILEOPSTRUCT是什么。它的成员pFrompTo一个或多个文件名。它们必须以双空终止。
于 2013-09-17T13:33:56.637 回答