如何发现文件夹中存在哪些文件

时间:2014-07-15 04:07:16

标签: c file

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

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

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

请建议我使用目录指针,我在网上浏览但没有得到确切的解决方案。

非常感谢您的期待。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果您事先知道文件名,即。他们遵循这样的模式: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[]中,您可以迭代。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这是一个简单的函数,显示文件(在参数中)是否在您放入参数的路径中。

如果文件退出则返回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;
}