C语言 如何发现哪些文件存在于一个文件夹



我写了一个程序,它接受一个输入文件,对它进行一些操作,并给出相应的输出文件。例如,对于inp1.txt输出为out1.txt,对于inp2.txt输出为out2.txt,以此类推,两者都在不同的文件夹中。

现在我已经使用了file_count变量并使用了switch case方法来打开特定的文件。

问题是,如果我在文件夹中再添加一个文件,那么我必须用另一个case语句重新编辑程序。

请给我建议一下目录指针的用法,我在网上找遍了,但没有找到一个确切的方法。

仅使用标准C api无法读取目录的内容,因此您必须使用特定于平台的api:

  • 在*nix系统上,您使用opendir(3)/readdir(3)/closedir(3)读取目录的内容。
  • 在Windows系统上,您使用FindFirstFile/FindNextFile/FindClose

如果您提前知道文件名,请点击查看。它们遵循这样的模式:f1.txt f2.txt fn.txt然后你可以遍历文件:

for (int i = 0 -> num_files)
    char * filename;
    filename = create_your_filename(i)
    open(filename)
    dostuff
    close(filename)

您可以遵循相同的模式,甚至编辑输出文件的文件名。否则,您也可以使用命令

中的所有输入文件调用程序:
 your_program *.txt

那么所有的文件名将出现在argv[]中,您可以遍历它。

您必须在运行时在处理之前找到输入文件夹中的文件。您可以按扩展名,文件名,创建日期等对文件进行排序。

下面是一个简单的函数,它显示一个文件(在parameters中)是否在你输入参数的路径中。

如果文件退出,返回0,否则返回1。

int             is_file_enabled(char *path, char *filename)
{
  char          exec[255], line[255];
  sprintf(exec, "ls %s | grep "%s"", path, filename);
  FILE*         cmd_res = popen(exec, "r");
  if (cmd_res != NULL)
    while (fgets(line, sizeof(line), cmd_res) != NULL)
      if (line != NULL) { pclose(cmd_res); return 0; }
  pclose(cmd_res);
  return 1;
}

最新更新