Мне нужно найти количество файлов и папок в каталоге. Я использую компилятор MinGW до этого. Я пытался использовать d_type, но не смог скомпилировать свой код.
И меня не волнует "." и каталог "..". Я не хочу их вычислять.
Итак, я пишу такую программу. Эта программа может легко найти, сколько файлов и папок в каталоге.
Но когда я даю новое имя папке вместо новой папки, новая папка (1). Эта программа вычисляет эти папки как файл.
Что я могу сделать? Я действительно застрял. Мне нужно найти, сколько файлов и сколько папок ...
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
int
main(int argc, char *argv[])
{
int file_count = 0;
int dir_count = 0;
struct dirent * entry;
struct stat filestat;
size_t nfiles = 0, ndirs = 0;
DIR *dp;
if (argc != 2)
{
printf("usage: put directory_name\n");
exit(-1);
}
if ((dp = opendir(argv[1])) == NULL)
{
printf("Error: can't open %s\n", argv[1]);
exit(-2);
}
while ((entry= readdir(dp)) != NULL){
if (!strcmp(entry->d_name, ".") || !strcmp(entry->d_name, "..")) {
continue;
}
stat(entry->d_name,&filestat);
if( S_ISDIR(filestat.st_mode) ){
ndirs++;
}
else
nfiles++;
}
closedir(dp);
printf("%lu Files, %lu Directories\n", nfiles, ndirs);
return(0);
}