在C中读取多个文本文件

时间:2012-11-17 02:24:49

标签: c file-io

当您知道目录中有许多内容时,从文本文件中读取和提取数据的正确方法是什么?我知道您可以使用fopen()来获取指向该文件的指针,然后执行while(fgets(..) != null){}之类的操作来读取整个文件,但是我怎样才能从另一个文件中读取?我想循环遍历目录中的每个文件。

2 个答案:

答案 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)的库函数,它也非常方便。

相关问题