显示目录中的文件

时间:2013-07-17 18:06:36

标签: c linux dirent.h

我有一个名为 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 

当我直接看到目录中的文件时,它会安排&amp;按正确顺序绘制文件。

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

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

由于

1 个答案:

答案 0 :(得分:3)

它不是随机读取文件,它只是按照它存储在目录文件本身中的顺序读取目录列表。当您“直接查看目录中的文件”时,我认为这意味着您正在使用ls,但ls在输出之前排序结果。如果你想要匹配输出,你需要做同样的事情。