Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C言語】ディレクトリ内のすべてのファイルとサブディレクトリを一覧表示する方法

この記事では、指定されたディレクトリ内に存在するすべてのファイルとサブディレクトリを一覧表示するC言語プログラムの作成方法を解説します。

ディレクトリとサブディレクトリとは

ディレクトリとは、複数のファイルを格納・管理するための場所(領域)のことです。Windowsでは「フォルダ」と呼ばれることもあります。

サブディレクトリとは、ルートディレクトリ(最上位のディレクトリ)の中に作られたディレクトリのことで、さらにその中に別のサブディレクトリを持つこともできます。このように、ディレクトリは階層構造で整理されています。

C言語では、<dirent.h>ヘッダーに含まれるopendir()関数やreaddir()関数を使うことで、ディレクトリ内のすべてのファイルとサブディレクトリを簡単に取得できます。

サンプルプログラム

以下は、カレントディレクトリ内のすべてのファイルとサブディレクトリを一覧表示するCプログラムです。

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

int main(void) {
    struct dirent *files;
    DIR *dir = opendir(".");

    // ディレクトリが開けなかった場合のエラー処理
    if (dir == NULL) {
        printf("ディレクトリを開けませんでした!");
        return 0;
    }

    // readdir()で1件ずつエントリを読み込んで表示
    while ((files = readdir(dir)) != NULL)
        printf("%s\n", files->d_name);

    closedir(dir);
    return 0;
}

プログラムのポイント

  • opendir():指定したパスのディレクトリストリームを開きます。ここではカレントディレクトリを表す"."を指定しています。
  • readdir():ディレクトリからエントリ(ファイルやサブディレクトリ)を1件ずつ読み込みます。すべて読み終わるとNULLを返します。
  • d_name:dirent構造体のメンバーで、ファイル名やディレクトリ名が格納されています。
  • closedir():使用後は必ずディレクトリストリームを閉じてリソースを解放します。

実行結果

cprograms
..
prog1.c
prog2.c
prog3.c
...
prog41.c

このように実行すると、カレントディレクトリ内のすべてのファイルとサブディレクトリの名前が出力されます。「.」と「..」も表示されますが、これらはそれぞれカレントディレクトリと親ディレクトリを表す特殊なエントリです。


  1. 【Java入門】ディレクトリ内のすべてのファイルを再帰的に削除するプログラムの書き方

    この記事では、Javaを使って指定したディレクトリ内のすべてのファイルを再帰的に削除する方法を解説します。サブディレクトリの中にあるファイルも含めて、ファイルだけを削除し、ディレクトリ構造自体は残すプログラムです。前提となるディレクトリ構成まず、Dドライブ直下に ExampleDirectory というフォルダがあり、その中に7つのファイルと2つのディレクトリが含まれているものと仮定します。SampleDirectory1:SampleFile1.txt と SampleFile2.txt の2つのファイルを含むSampleDirectory2:SampleFile2.txt と Sample

  2. Javaでディレクトリ内のすべてのファイルを再帰的に一覧表示する方法

    この記事では、Javaを使って指定したディレクトリ内のすべてのファイルを再帰的に一覧表示するプログラムを解説します。サブディレクトリの中にあるファイルまで含めて取得できるため、フォルダ全体の内容を把握したい場合に便利なテクニックです。 前提となるディレクトリ構成 Dドライブ直下に「ExampleDirectory」というフォルダがあり、その中に7つのファイルと2つのサブディレクトリが格納されていると仮定します。 各サブディレクトリの内容は以下の通りです。 SampleDirectory1:SampleFile1.txt と SampleFile2.txt の2つのファイルを含みます。 Sa