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コンパイラ
ありがとう