如何在C中按日期打印目录中的文件名列表?

时间:2016-08-20 15:45:13

标签: c sorting date filenames

我想按日期打印目录中每个文件名的名称。我已经对每个日期进行了排序,但我希望将每个名称与其日期相关联。是否有功能或方法来做到这一点?

#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;
        }
    }
}

它有点基础,但它确实有效。

1 个答案:

答案 0 :(得分:1)

您应该按照以下步骤操作:

  • 将文件名和日期存储在结构数组中,如果文件多于预期,则重新分配数组。确保分配文件名的副本。
  • 使用qsort对数组进行排序,并使用适当的排序函数。尝试使用不同的排序函数按文件时间,名称,扩展名进行排序......
  • 按照数组的顺序打印条目。转换文件时间可以使用strftime()
  • 完成