Programme pour lister les fichiers dans un répertoire

CBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, nous allons créer un programme C pour lister tous les fichiers présents dans un répertoire en utilisant le fichier d'en-tête dirent.h.

Note: Vous devez créer le fichier ~/project/main.c vous-même pour pratiquer la programmation et apprendre à le compiler et à l'exécuter à l'aide de gcc.

cd ~/project
## créer main.c
touch main.c
## compiler main.c
gcc main.c -o main
## exécuter main
./main

Inclure les fichiers d'en-tête

Nous devons inclure les fichiers d'en-tête d'entrée/sortie standard et de dirent en écrivant le code suivant au début du programme :

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

Définir la fonction principale

La fonction main() est le point d'entrée de notre programme. Notre programme commence à s'exécuter à partir d'ici. Nous déclarerons également le pointeur de répertoire d du type DIR et le pointeur d'entrée de répertoire dir du type struct dirent.

int main(void)
{
    DIR *d;
    struct dirent *dir;
    /*Votre code ici*/
    return 0;
}

Ouvrir le répertoire

Nous allons ouvrir le répertoire requis en utilisant la fonction opendir(). Ici, l'opérateur point (.) indique le répertoire courant.

d = opendir(".");

Lire le répertoire

Nous allons lire chaque entrée du répertoire en utilisant la fonction readdir(). Ici, nous vérifions que le pointeur de répertoire n'est pas NULL. Si ce n'est pas le cas, nous allons afficher tous les fichiers présents dans le répertoire.

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

Code complet

Voici le code complet du programme :

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

Résumé

Dans ce laboratoire, nous avons appris à créer un programme C pour lister les noms de tous les fichiers dans un répertoire. Nous avons utilisé des fonctions du fichier d'en-tête dirent.h pour y parvenir. En utilisant ce programme, nous pouvons facilement récupérer les noms de tous les fichiers présents dans le répertoire spécifié.