我编写了一个程序,它接受一个输入文件,对它进行一些操作并给出相应的输出文件。即,对于inp1.txt输出是out1.txt,对于inp2.txt输出是out2.txt,依此类推,两者都在不同的文件夹中。
现在我使用了一个file_count变量并使用了switch case方法来打开特定文件。
问题是,如果我再向文件夹中添加一个文件,那么我必须用另一个case语句重新编辑该程序。
请建议我使用目录指针,我在网上浏览但没有得到确切的解决方案。
非常感谢您的期待。
答案 0 :(得分:2)
仅使用标准C API无法读取目录内容,因此您必须使用特定于平台的API:
opendir(3)
/ readdir(3)
/ closedir(3)
来阅读目录的内容。FindFirstFile
/ FindNextFile
/ FindClose
答案 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;
}