繁体   English   中英

用C读取多个文本文件

[英]Reading multiple text files in C

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

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;
}

这只是打开一个在命令行上命名的目录并打印它包含的所有文件的名称。 但是,您可以根据需要处理文件,而不是打印名称...

通常,文件列表会在命令行上提供给您的程序,因此可以在作为第二个参数传递给 main() 的指针数组中使用。 即调用 shell 用于查找目录中的所有文件,然后您的程序只是遍历 argv[] 以打开和处理(和关闭)每个文件。

见第。 162 in "The C Programming Language", Kernighan and Ritchie, 2nd edition,为您可以使用的代码提供几乎完整的模板。 在该示例filecopy()您自己的处理替换filecopy()函数。

如果你真的需要直接从你的程序中读取一个目录(或多个目录),那么你需要阅读 libc 中的 opendir(3) 和相关函数。 一些系统还提供了一个名为 ftw(3) 或 fts(3) 的库函数,它们也非常方便。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM