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

标签 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;
        }
    }
}

它有点简陋,但它确实有效。

最佳答案

您应该遵循以下步骤:

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

关于c - 如何在 C 中按日期打印目录中的文件名列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39055969/

相关文章:

javascript - JavaScript 中的日期间隔计算

c - 如何从字符串中按数字分隔单词

c - fgets 和不可打印的字符

java.sql.Date 格式错误

python - sorted() 函数不同于通过列表理解获得的结果

java - SWT 表过滤器和排序

jquery - 使用 jQuery 的日期选择器突出显示特定范围内的日期

c - 为什么我应该使用或不使用 MSG_CONFIRM?

c - Intel 64 ISA 中类型转换的说明是什么

php mongodb全文搜索和排序