如何在没有system()的情况下使用C在Windows中复制和粘贴文件或目录

如何在没有system()的情况下使用C在Windows中复制和粘贴文件或目录,c,C,我正在制作一个基本的文件浏览器,所以我想在我的程序中包括复制和粘贴功能。我不在任何GUI环境和win32api中工作 我有LCRS树 其中C:驱动器是父驱动器 它的第一个文件夹是left child,其余文件夹是right sibling 因此,当我选择任何子节点或同级节点进行复制并选择其目的地时,所有内容都应该粘贴到所需的位置 可以使用system()和cp命令以及mkdir()函数来完成。还有别的办法吗 还要告诉我如何在相关应用程序中打开文件?就像abc.txt在记事本中打开一样。这里有一个

我正在制作一个基本的文件浏览器,所以我想在我的程序中包括复制和粘贴功能。我不在任何GUI环境和win32api中工作

我有LCRS树

其中C:驱动器是父驱动器 它的第一个文件夹是left child,其余文件夹是right sibling

因此,当我选择任何子节点或同级节点进行复制并选择其目的地时,所有内容都应该粘贴到所需的位置

可以使用system()和cp命令以及mkdir()函数来完成。还有别的办法吗

还要告诉我如何在相关应用程序中打开文件?就像abc.txt在记事本中打开一样。

这里有一个使用的包装器。它可以用来复制大多数文件或目录;有一些例外情况(例如,试图将您无权访问的目录或特殊文件夹(如“我的文档”)复制到远程网络)。成功后,它将返回
0

#include <Shellapi.h>
int Copy(PCZZTSTR source, PCZZTSTR destination) {
    return SHFileOperation(&(SHFILEOPSTRUCTW){ .wFunc  = FO_COPY,
                                               .pFrom  = source,
                                               .pTo    = destination,
                                               .fFlags = FOF_SILENT
                                                       | FOF_NOCONFIRMMKDIR
                                                       | FOF_NOCONFIRMATION
                                                       | FOF_NOERRORUI
                                                       | FOF_NO_UI });
}
#包括
int副本(PCZZTSTR源、PCZZTSTR目标){
返回SHFileOperation(&(SHFILEOPSTRUCTW){.wFunc=FO_COPY,
.pFrom=源,
.pTo=目的地,
.fFlags=FOF_沉默
|FOF_noconfirmkdir
|确认
|福乌·诺埃罗瑞
|FOF_NO_UI});
}

fread()
fwrite()
。它可以处理文件。目录呢?我应该匹配目录名并将其放入mkdir()中吗@H2CO3@userXXXX非常好,谢谢你,先生。请回答我的第二个问题。如何在其关联的应用程序@H2CO3中打开文件。在其关联的应用程序中打开文件需要Windows API(ShellExecute/ShellExecuteEx),这些API调用使用其他API调用在Windows注册表中查找关联信息。如果不使用Windows API,即使您想编写自己的API,也无法做到这一点。(软件安装会在安装时建立关联,而他们对您的程序一无所知;他们也使用Windows API。)您还将遇到用户权限、UAC、网络等问题。