DIR *ptr;
struct dirent *ent, ent2;
int n=0, i=0;
dir = ".";
ptr = opendir(dir);
while((ent = readdir(ptr)) != NULL)
{
if(ent -> d_type != DT_DIR)
{
n++;
}
}
char array[n][100];
while((ent2 = readdir(ptr)) != NULL)
{
if(ent2 -> d_type != DT_DIR)
{
strcpy(array[i], ent2 -> d_name);
i++;
}
}
В приведенном выше коде на C я пытался подсчитать количество файлов, исключая папки в рабочем каталоге. Затем используйте count для объявления массива double char, который затем используется для хранения имен файлов. Мне нужно объявить двойной массив, зная количество файлов. (Не разрешено объявлять большой массив). Код отлично работает, когда я объявляю двойной массив с большим размером и просто копирую имена файлов в него без каких-либо подсчетов. Как я понимаю, переменная ent изменяется в течение первого цикла while. Именно по этой причине я использовал другой «struct dirent ent2».Подсчет количества файлов в каталоге в C с использованием dirent не работает во второй раз.
'readdir (ptr)' _Если конец потока каталога достигнут, возвращается NULL – BLUEPIXY