Как распечатать список имен файлов из каталога по дате в C?

c sorting date filenames

58 просмотра

1 ответ

Я хочу напечатать имя каждого файла из каталога по дате. Я отсортировал каждую дату, но я хочу связать каждое имя с его датой. Есть ли функция или метод для этого?

#define BUFFERSIZE 100

char SORTNAME() {
    DIR *dir = opendir(".");
    if (dir) {
        char buffer[BUFFERSIZE];
        struct stat info;
        struct dirent *s_dir;
        int buf = BUFFERSIZE;
        time_t *Time = malloc(sizeof(time_t) * buf);
        int i = 0;

        while ((s_dir = readdir(dir)) != NULL) {
            if (s_dir->d_name[0] != '.') {
                sprintf(buffer, "%s", s_dir->d_name);
                stat(buffer, &info);
                Time[i] = info.st_mtime;
                i++;
            }
        } 

        int size = i;
        int h, j, k, min;
        time_t t;

        for (j = 0; j < size - 1; j++) {
            min = j;
            for (k = j + 1; k < size; k++) {
                if (Time[k] > Time[min]) {
                    min = k;
                }
            }
            t = Time[min];
            Time[min] = Time[j];
            Time[j] = t;
        }
    }
}

Это немного рудиментарно, но это работает.

Автор: HugoB Источник Размещён: 08.11.2019 11:31

Ответы (1)


1 плюс

Решение

Вы должны выполнить следующие шаги:

  • хранить имена файлов и даты в массиве структур, перераспределяя массив, если есть больше файлов, чем ожидалось. Убедитесь, что вы распределяете копии имен файлов.
  • сортировать массив с qsortпомощью соответствующей функции сортировки. Попробуйте использовать различные функции сортировки для сортировки по времени файла, имени, расширению ...
  • печатать записи в порядке массива. Преобразование времени файла может быть сделано сstrftime()
Автор: chqrlie Размещён: 20.08.2016 04:39
Вопросы из категории :
32x32