Найти самый новый файл в директории 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 - C (СИ)»

textual
man 2 stat
man scandir
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

10   голосов, оценка 4.500 из 5


СДЕЛАЙТЕ РЕПОСТ