Определить количество файлов с указанным расширением, находящимся в заданном каталоге - 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, содержащую информацию о файле. Внутри функции происходит следующая последовательность действий:
- Проверка на то, является ли текущий файл
.
или..
. Если это так, то функция возвращает 0. - В этой строке кода функция пытается найти точку в имени файла, используя функцию strrchr.
- Если точка в имени файла не найдена, то функция возвращает 0.
- В этой строке кода определяются две переменные: plen и extlen. plen — длина имени файла после точки, extlen — длина расширения.
- Если расширение пустое, то функция возвращает 0.
- В этой строке кода выполняется сравнение имени файла после точки и расширения. Если они совпадают, то функция возвращает 1. Функция sel используется в основном коде для обработки каждого файла в каталоге. Для каждого файла выполняется проверка, является ли его расширение указанным. Если это так, то увеличивается счетчик. В конце выполнения программы значение счетчика будет содержать количество файлов с указанным расширением в каталоге.