从目录中显示的文件(displaying files from directory)

2019-11-02 07:10发布

我有一个名为DIR目录名。 它包含以下列文件

12.07.2013
13.07.2013
14.07.2013
15.07.2013
16.07.2013
17.07.2013

我写了下面的C程序目录dir显示所有文件

代码:

#include <stdio.h>
#include <string.h>
#include <dirent.h>
int main (int argc, char *argv[])
{
    DIR *directory;
    struct dirent *file;     
    directory = opendir (argv[1]);
    if (directory != NULL){
        while (file = readdir (directory))
              printf("FILE : %s \n",file->d_name);

        (void) closedir (directory);
        }
   else
        printf("Not able to open the directory\n");
   return 0;
}

上面的代码给实际输出

FILE : 14.07.2013 
FILE : 13.07.2013 
FILE : 17.07.2013 
FILE : . 
FILE : 15.07.2013 
FILE : .. 
FILE : 12.07.2013 
FILE : 16.07.2013 

但我预计产量像下面正确的顺序

FILE : 12.07.2013 
FILE : 13.07.2013 
FILE : 14.07.2013 
FILE : 15.07.2013 
FILE : 16.07.2013 
FILE : 17.07.2013 

当我直接看到在目录中的文件是安排和正确的顺序diplaying文件。

那么,为什么上面的C代码不按照正确的顺序读取文件时,我的意思是随机读取文件。

工作环境:Linux操作系统(ubuntu12.04),gcc编译器

谢谢

Answer 1:

这不是随机读取文件,它只是读取它存储在目录文件本身的顺序目录列表​​。 当你“直接看到目录中的文件”,我相信这意味着你正在使用ls ,但ls排序输出前的结果。 如果你想匹配输出你需要做的是相同的。



文章来源: displaying files from directory
标签: c linux dirent.h