ディレクトリ内のファイルを一覧表示するプログラム

CCBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、dirent.h ヘッダーファイルを使用してディレクトリ内に存在するすべてのファイルを一覧表示する C プログラムを作成します。

注: コーディングを練習し、gcc を使用してコンパイルおよび実行する方法を学ぶには、自分で ~/project/main.c ファイルを作成する必要があります。

cd ~/project
## main.c を作成する
touch main.c
## main.c をコンパイルする
gcc main.c -o main
## main を実行する
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/if_else("If...Else") c/ControlFlowGroup -.-> c/while_loop("While Loop") c/CompoundTypesGroup -.-> c/structures("Structures") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FileHandlingGroup -.-> c/write_to_files("Write To Files") c/FileHandlingGroup -.-> c/create_files("Create Files") c/FileHandlingGroup -.-> c/read_files("Read Files") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123315{{"ディレクトリ内のファイルを一覧表示するプログラム"}} c/if_else -.-> lab-123315{{"ディレクトリ内のファイルを一覧表示するプログラム"}} c/while_loop -.-> lab-123315{{"ディレクトリ内のファイルを一覧表示するプログラム"}} c/structures -.-> lab-123315{{"ディレクトリ内のファイルを一覧表示するプログラム"}} c/function_declaration -.-> lab-123315{{"ディレクトリ内のファイルを一覧表示するプログラム"}} c/write_to_files -.-> lab-123315{{"ディレクトリ内のファイルを一覧表示するプログラム"}} c/create_files -.-> lab-123315{{"ディレクトリ内のファイルを一覧表示するプログラム"}} c/read_files -.-> lab-123315{{"ディレクトリ内のファイルを一覧表示するプログラム"}} c/output -.-> lab-123315{{"ディレクトリ内のファイルを一覧表示するプログラム"}} end

ヘッダーファイルのインクルード

プログラムの先頭に次のコードを記述することで、標準入出力と dirent ヘッダーファイルをインクルードする必要があります。

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

メイン関数を定義する

main() 関数は、プログラムのエントリポイントです。プログラムはここから実行を開始します。また、DIR 型のディレクトリポインタ dstruct dirent 型のディレクトリエントリポインタ dir を宣言します。

int main(void)
{
    DIR *d;
    struct dirent *dir;
    /*コードをここに記述します*/
    return 0;
}

ディレクトリを開く

opendir() 関数を使用して必要なディレクトリを開きます。ここで、ドット (.) 演算子は現在のディレクトリを示します。

d = opendir(".");

ディレクトリを読み取る

readdir() 関数を使用してディレクトリの各エントリを読み取ります。ここで、ディレクトリポインタが NULL でないことを確認します。NULL でなければ、ディレクトリ内に存在するすべてのファイルを表示します。

if (d)
{
    while ((dir = readdir(d))!= NULL)
    {
        printf("%s\n", dir->d_name);
    }
    closedir(d);
}

完全なコード

以下は、プログラムの完全なコードです。

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

int main(void)
{
    DIR *d;
    struct dirent *dir;
    d = opendir(".");
    if (d)
    {
        while ((dir = readdir(d))!= NULL)
        {
            printf("%s\n", dir->d_name);
        }
        closedir(d);
    }
    return(0);
}

まとめ

この実験では、ディレクトリ内のすべてのファイルの名前を一覧表示するための C プログラムを作成する方法を学びました。これを達成するために、dirent.h ヘッダーファイルの関数を使用しました。このプログラムを使用することで、指定されたディレクトリ内に存在するすべてのファイルの名前を簡単に取得できます。