Определить количество файлов с указанным расширением, находящимся в заданном каталоге - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Определить количество файлов с указанным расширением, находящимся в заданном каталоге. Если таких файлов нет, то выдать на экран сообщение. Имя каталога и расширение передаются в программу через параметры командной строки. помогите кто может?

Решение задачи: «Определить количество файлов с указанным расширением, находящимся в заданном каталоге»

textual
Листинг программы
int sel (struct dirent *d)
{
        int plen, extlen;
        if ( !strcmp(".", d->d_name) || !strcmp("..", d->d_name)) return 0;
        char* p = strrchr(d->d_name, '.');
        if ( !p ) return 0;
        plen = strlen(p);
        extlen = strlen(ext);
        return strncmp(ext, p, (extlen < plen) ? extlen : plen) == 0;
}

Объяснение кода листинга программы

В данном коде определена функция sel, которая принимает в качестве аргумента структуру dirent, содержащую информацию о файле. Внутри функции происходит следующая последовательность действий:

  1. Проверка на то, является ли текущий файл . или ... Если это так, то функция возвращает 0.
  2. В этой строке кода функция пытается найти точку в имени файла, используя функцию strrchr.
  3. Если точка в имени файла не найдена, то функция возвращает 0.
  4. В этой строке кода определяются две переменные: plen и extlen. plen — длина имени файла после точки, extlen — длина расширения.
  5. Если расширение пустое, то функция возвращает 0.
  6. В этой строке кода выполняется сравнение имени файла после точки и расширения. Если они совпадают, то функция возвращает 1. Функция sel используется в основном коде для обработки каждого файла в каталоге. Для каждого файла выполняется проверка, является ли его расширение указанным. Если это так, то увеличивается счетчик. В конце выполнения программы значение счетчика будет содержать количество файлов с указанным расширением в каталоге.

Оцени полезность:

10   голосов , оценка 3.5 из 5
Похожие ответы