Программа для перечисления файлов в директории

CBeginner
Практиковаться сейчас

Введение

В этом практическом занятии мы создадим C-программу для перечисления всех файлов в директории с использованием заголовочного файла dirent.h.

Примечание: вам нужно самостоятельно создать файл ~/project/main.c для практики написания кода и изучения процесса компиляции и запуска программы с использованием gcc.

cd ~/project
## создать main.c
touch main.c
## скомпилировать main.c
gcc main.c -o main
## запустить main
./main

Подключить заголовочные файлы

Нам нужно подключить стандартные заголовочные файлы ввода/вывода и заголовочный файл dirent, написав следующий код в начале программы:

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

Определить главную функцию

Функция main() является точкой входа в нашу программу. Наша программа начинает выполняться отсюда. Также мы объявляем указатель на директорию d типа DIR и указатель на запись о директории dir типа struct dirent.

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. С помощью этой программы мы можем легко получить имена всех файлов, присутствующих в указанной директории.