Запись имен файлов из директории в массив СИ
Нужно записать все имена файлов из директории в массив для дальнейшего переименования их по определенному шаблону, как это можно реализовать?
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