gpt4 book ai didi

c - 如何使用 CopyFile 函数复制多个文件?

转载 作者:行者123 更新时间:2023-11-30 20:19:37 29 4
gpt4 key购买 nike

这是我将文件从 src 复制到 dst 的代码示例:

int main() {

const wchar_t* file[3] = { L"\\abc.txt", L"\\def.txt", L"\\ghi.txt" };

for (int i = 0; i < 3; i++) {
wchar_t* src = funcA();
wchar_t* dst = funcB();
wcscat(dst, file[i]);
wcscat(src, file[i]);
CopyFileW(src, dst, TRUE);
}
}

有更好的方法吗?我可以通过不多次运行 funcA 和 funcB 来优化代码吗?

最佳答案

修复错误后,您的代码会将文件复制到自身。归结起来是这样的:

const wchar_t* file[3] = { L"\\abc.txt", L"\\def.txt", L"\\ghi.txt" };
for(int i = 0; i < _countof(file); i++)
CopyFile(file[i], file[i], TRUE);

它只是将 "\\abc.txt" 复制到 "\\abc.txt""\\def.txt" > 到 "\\def.txt"

大概您的目的是将多个文件从一个目录复制到另一个目录。例如将“abc.txt”复制到“c:\\target\\abc.txt”

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

int main(void)
{
const wchar_t* files[3] = { L"1.txt", L"2.txt", L"3.txt" };

wchar_t *directory = L"c:\\target";
wchar_t dst[MAX_PATH] = { 0 };
for(int i = 0; i < _countof(files); i++)
{
swprintf(dst, _countof(dst), L"%ls\\%ls", directory, files[i]);
CopyFileW(files[i], dst, TRUE);
}

return 0;
}

请注意,我将源更改为“abc.txt”,并更改了swprintf中的格式说明符

在实际应用中,您可能需要将“c:\\src\\1.txt”复制到“c:\\dst\\1.txt” >,像这样的代码:

#define UNICODE
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <Shlwapi.h>

#pragma comment(lib, "Shlwapi.lib")//Add library (Visual Studio specific)

int main(void)
{
const wchar_t* files[3] =
{ L"c:\\src\\1.txt", L"c:\\src\\2.txt", L"c:\\src\\3.txt" };

wchar_t *directory = L"c:\\dst";
wchar_t dst[MAX_PATH] = { 0 };

if(!PathFileExists(directory))
{
wprintf(L"path error\n");
return 0;
}

for(int i = 0; i < _countof(files); i++)
{
swprintf(dst, _countof(dst), L"%ls\\%ls", directory, PathFindFileName(files[i]));
//CopyFile(files[i], dst, TRUE);
wprintf(L"copy %s to %s\n", files[i], dst);
}

return 0;
}

关于c - 如何使用 CopyFile 函数复制多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49531475/

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