0

dirというディレクトリ名があります。次のファイルが順番に含まれています

12.07.2013
13.07.2013
14.07.2013
15.07.2013
16.07.2013
17.07.2013

ディレクトリdirからすべてのファイルを表示するために、次のCプログラムを作成しました

コード:

#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 

ディレクトリ内のファイルを直接見ると、ファイルを適切な順序で並べ替えて表示します。

次に、上記のCコードがファイルを適切な順序で読み取らない理由は、ファイルをランダムに読み取ることを意味します。

動作環境:Linux(ubuntu12.04)、gccコンパイラ

ありがとう

4

1 に答える 1