C:读取目录中的所有* .txt文件

时间:2015-11-07 04:45:32

标签: c linux file

我试图创建一个程序来读取目录中的所有.txt个文件。它使用file->d_name获取每个文件的名称,但现在我需要打开文件才能使用它们。

#include <dirent.h>
#include <stdlib.h>
#include <stdio.h>

int main (int argc, char *argv[]) {

    DIR *directory;
    struct dirent* file;
    FILE *a;
    char ch;

    if (argc != 2) {
        printf("Error\n", argv[0]);
        exit(1);
    }

    directory = opendir(argv[1]);
    if (directory == NULL) {
        printf("Error\n");
        exit(2);
    }

    while ((file=readdir(directory)) != NULL) {
        printf("%s\n", file->d_name);

            // And now????

        }

        closedir(directory);
    }

2 个答案:

答案 0 :(得分:1)

您写道:

while ((file=readdir(directory)) != NULL) {
printf("%s\n",file->d_name);
   //And now????
}
  1. 检查目录条目是文件还是目录。如果它不是常规文件,请转到下一个目录条目。

    if ( file->d_type != DT_REG )
    {
       continue;
    }
    
  2. 我们有档案。通过组合目录名和目录条目中的文件名来创建文件的名称。

    char filename[1000]; // Make sure this is large enough.
    sprintf(filename, "%s/%s", argv[1], file->d_name);
    
  3. 使用标准库函数打开并读取文件内容。

    FILE* fin = fopen(filename, "r");
    if ( fin != NULL )
    {
       // Read the contents of the file
    }
    
  4. 在处理下一个目录条目之前关闭文件。

    fclose(fin);
    

答案 1 :(得分:0)

我认为您需要查看file handling in c

while ((file=readdir(directory)) != NULL) {
    printf("%s\n",file->d_name);
    //To open file 
     a = fopen("file->d_name", "r+");   //a file pointer you declared


    }