Найти самый новый файл в директории UNIX - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Недавно увидел такой вопрос на сайте вопрос и ответов. Задался целью его решить ииии... Выродил я всего лишь следующее
int main(void){
    FILE *fp;
    struct stat buff;
    struct stat st_newest;
    DIR *dfd;
    struct dirent *dp;
    struct dirent *newest;
 
    dfd=opendir("test");
    newest = readdir(dfd);
    stat(newest->d_name, &st_newest);
    while((dp=readdir(dfd)) != NULL){
        stat(dp->d_name, &buff);
 
        if(st_newest.st_mtime > buff.st_mtime){
            newest = dp;
            stat(newest->d_name, &st_newest);
        }
    }
    printf("name: %s\n", newest->d_name);
    return 0;
}
Код конечно страшненький, но надеюсь ничьи чувства я не оскорбил. Предполагаемый результат работы кода: вывод новейшего файла в директории. Ошибка: st_mtime одинаковые у многих файлов, у некоторых отрицательное да еще и меняется переодически. Что происходит?

Решение задачи: «Найти самый новый файл в директории UNIX»

textual
Листинг программы
man 2 stat
man scandir

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.5 из 5
Похожие ответы