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.cselbst 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
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;
}
Das Verzeichnis öffnen
Wir werden das erforderliche Verzeichnis mit der opendir()-Funktion öffnen. Hierbei zeigt der Punkt (.)-Operator das aktuelle Verzeichnis an.
d = opendir(".");
Das 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.



