1
我想将A驱动器的内容复制到文件夹C:\ test \ disk1中。文件夹disk1已经存在。该程序编译,但运行时,我得到错误87.我知道错误87有一个无效的参数,但我不知道问题出在哪里。有没有人有任何想法?SHFileOperation错误87
#include <Windows.h>
#include <stdio.h>
int main(int argc, char ** argv)
{
const wchar_t *const sourceFile = L"A:\\";
const wchar_t *const outputFile = L"C:\\test\\disk1";
SHFILEOPSTRUCTW fileOperation;
memset(&fileOperation, 0, sizeof(SHFILEOPSTRUCTW));
fileOperation.wFunc = FO_COPY;
fileOperation.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR |
FOF_NOERRORUI | FOF_FILESONLY;
fileOperation.pFrom = sourceFile;
fileOperation.pTo = outputFile;
int result = SHFileOperationW(&fileOperation);
if (result != 0)
{
printf("SHFileOperation Failure: Error%u\n", result);
return 1;
}
memset(&fileOperation, 0, sizeof(SHFILEOPSTRUCTW));
printf("OK\n");
return 0;
}
@IInspectable:感谢修复 –
文件I/O API有时会将正斜杠转换为反斜杠,有时它们不会。 Windows上的路径分隔符是反斜杠。建议使用'错误'分隔符来提高可读性是值得怀疑的。如果这是关于可读性的,可以使用'L“A:\\”L“\ 0”'和'L“C:\\ test \\ disk1”L“\ 0”'代替。 – IInspectable
@RobbieJ:这是一个单独的问题。请问这样。 (并注意IInspectable添加的标签。) –