当您知道目录中有许多内容时,从文本文件中读取和提取数据的正确方法是什么?我知道您可以使用fopen()
来获取指向该文件的指针,然后执行while(fgets(..) != null){}
之类的操作来读取整个文件,但是我怎样才能从另一个文件中读取?我想循环遍历目录中的每个文件。
答案 0 :(得分:2)
Sam,你可以像下面的小函数一样使用opendir / readdir。
#include <stdio.h>
#include <dirent.h>
static void scan_dir(const char *dir)
{
struct dirent * entry;
DIR *d = opendir( dir );
if (d == 0) {
perror("opendir");
return;
}
while ((entry = readdir(d)) != 0) {
printf("%s\n", entry->d_name);
//read your file here
}
closedir(d);
}
int main(int argc, char ** argv)
{
scan_dir(argv[1]);
return 0;
}
这只会打开一个在命令行上命名的目录,并打印它包含的所有文件的名称。但是,您可以根据需要处理文件,而不是打印名称。
答案 1 :(得分:1)
通常,在命令行上为程序提供了一个文件列表,因此可以在作为第二个参数传递给main()的指针数组中使用。即调用shell用于查找目录中的所有文件,然后您的程序只需遍历argv []即可打开并处理(并关闭)每个文件。
见p。 “The C Programming Language”中的162,Kernighan和Ritchie,第2版,为您可以使用的代码提供了几乎完整的模板。在该示例中,将您自己的处理替换为filecopy()
函数。
如果你真的需要直接从你的程序中读取目录(或目录),那么你将需要阅读libc中的opendir(3)和相关函数。有些系统还提供了一个名为ftw(3)或fts(3)的库函数,它也非常方便。