Запись имен файлов из директории в массив СИ

Нужно записать все имена файлов из директории в массив для дальнейшего переименования их по определенному шаблону, как это можно реализовать?

int main (int argc, char *argv []) {
setlocale(LC_ALL,"Rus");
struct dirent *ent;
DIR *dir;
const char *directory;
char *OldFileName[255];
char NewFileName[]="File";

directory=argv[1];
dir=opendir(directory);
int i=0;
while ((ent=readdir(dir)) != false) {
OldFileName[i]=ent->d_name;
if(rename(OldFileName[i],NewFileName)==0)
{
printf("переименованно");
}
i++;
}

closedir(dir);

return 0;
}

Ответы (1 шт):

Автор решения: maint

readdir возвращает ссылку на структуру dirent. Если закончился список файлов, то NULL, а не false. Второе для меня не понятно, зачем массив OldFileName. Да и 255, как то не серьезно для списка фалов в каталоге (папке). Если закончится размерность будет выход за границу массива и ошибка Segmentation fault. Так что массив тут не нужен. И еще, я бы проверил код возврата из opendir. Может быть опять же NULL

→ Ссылка