Programm zum Auflisten von Dateien im Verzeichnis

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir ein C-Programm erstellen, um alle Dateien in einem Verzeichnis aufzulisten, indem wir die Header-Datei dirent.h verwenden.

Hinweis: Sie müssen die Datei ~/project/main.c selbst erstellen, um zu üben, wie man Code schreibt und wie man es mit gcc kompiliert und ausführt.

cd ~/project
## main.c erstellen
touch main.c
## main.c kompilieren
gcc main.c -o main
## main ausführen
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) 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{{"Programm zum Auflisten von Dateien im Verzeichnis"}} c/if_else -.-> lab-123315{{"Programm zum Auflisten von Dateien im Verzeichnis"}} c/while_loop -.-> lab-123315{{"Programm zum Auflisten von Dateien im Verzeichnis"}} c/structures -.-> lab-123315{{"Programm zum Auflisten von Dateien im Verzeichnis"}} c/function_declaration -.-> lab-123315{{"Programm zum Auflisten von Dateien im Verzeichnis"}} c/write_to_files -.-> lab-123315{{"Programm zum Auflisten von Dateien im Verzeichnis"}} c/create_files -.-> lab-123315{{"Programm zum Auflisten von Dateien im Verzeichnis"}} c/read_files -.-> lab-123315{{"Programm zum Auflisten von Dateien im Verzeichnis"}} c/output -.-> lab-123315{{"Programm zum Auflisten von Dateien im Verzeichnis"}} end

Header-Dateien einbinden

Wir müssen die Standard-Eingabe/Ausgabe- und die dirent-Header-Dateien einbinden, indem wir den folgenden Code am Anfang des Programms schreiben:

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

Hauptfunktion definieren

Die main()-Funktion ist der Einstiegspunkt unseres Programms. Unser Programm beginnt hier mit der Ausführung. Wir werden auch einen Verzeichniszeiger d vom Typ DIR und einen Verzeichniseintragszeiger dir vom Typ struct dirent deklarieren.

int main(void)
{
    DIR *d;
    struct dirent *dir;
    /*Ihr Code kommt hier hin*/
    return 0;
}

Öffnen des Verzeichnisses

Wir werden das erforderliche Verzeichnis mit der opendir()-Funktion öffnen. Hierbei zeigt der Punkt (.)-Operator das aktuelle Verzeichnis an.

d = opendir(".");

Verzeichnis lesen

Wir werden jedes Verzeichniseintrag mit der readdir()-Funktion lesen. Hier überprüfen wir, dass der Verzeichniszeiger nicht NULL ist. Wenn er nicht NULL ist, werden wir alle Dateien im Verzeichnis ausgeben.

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

Vollständiger Code

Hier ist der vollständige Code des Programms:

#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);
}

Zusammenfassung

In diesem Lab haben wir gelernt, wie man ein C-Programm erstellt, um die Namen aller Dateien in einem Verzeichnis aufzulisten. Wir haben dazu Funktionen aus der Header-Datei dirent.h verwendet. Mit diesem Programm können wir leicht die Namen aller Dateien im angegebenen Verzeichnis abrufen.