【发布时间】:2019-05-24 12:36:15
【问题描述】:
我有一个期中项目,要制作一个防病毒软件,主要参数是一个目录和一个路径: 该路径指向包含病毒签名的文件。防病毒软件的目标是扫描给定目录中的所有文件以查找病毒签名。 我已经完成了整个项目,除了在特定给定目录中找到所有文件的部分。由于这个项目是由一个没有任何外部库并在未知操作系统上运行的自动反馈系统检查的(即使我的老师也不知道,这是课程的系统),它有成为一个跨平台的解决方案,不依赖任何库,只依赖于 stdio.h、stdlib.h、string.h 和 windows.h
几乎每个教程和这样做的示例都使用 HANDLE(我们还没有学过,也不应该使用)或使用 . 问题是要找到一种不需要直接库的方法。
我需要一些函数来获取目录中的所有文件
类似这样的:
char** fileNames = somefunc(char* dir)
【问题讨论】:
-
如果没有某种库,那无法完成。文件遍历不是标准C,需要调用OS。
-
这对你的导师来说可能是一个更好的问题:对你施加这些(假定的)限制的人。
-
没有“跨平台解决方案”可以做到这一点。为此,您需要使用操作系统本机功能。也许是时候让你的老师澄清一下了?
-
对于Windows,原生解决方案是使用
FindFirstFile和FindNextFile(如果包含<windows.h>,则会声明)。 -
@LiorLevin 如果你的目标是“打破你的头脑”,告诉他你已经做到了,你知道没有答案。这就像要求某人在不教他们进位的情况下将 28 + 17 相加——解决方案是“你不能”;你必须学习携带。 (另外,你的导师在骗你。如果你可以使用
<windows.h>,他知道操作系统是Windows。)