传递dir作为参数并显示其最后修改日期

时间:2015-10-07 21:20:38

标签: c date directory dir stat

好的,所以我想的是一个程序显示我的文件夹或文件的最后修改时间;我成功地做到了这一点,但我只把路径作为论点。

#include <stdio.h>
#include <time.h>
#include <sys/stat.h>
#include <string.h>
#include <sys/types.h>

int main(int count , char *args[]){
    char buffer[50];
    struct stat attr;
    if(count < 2){
        printf("No parameters passed");
    }
    else{
        strcpy(buffer,args[1]);
        stat(buffer,&attr);
        printf("Last modiffied date time : % s" , ctime(&attr.st_mtime));
    }
    return 0;
}

哪个有效!但我想知道我是否可以使用DIR而不是char路径来做到这一点。 类似的东西:

.........
DIR *mydir;
struct dirent *dir;
dir = opendir(args[1]);

注意:但是我发现我之前使用的stat函数(路径作为参数)具有以下参数:

int stat(const char*restrict path, struct stat *restrict buf);

我接受了这个问题:

如果我不能使用此功能,我怎样才能真正显示文件夹的统计信息(在我的情况下是上次修改日期)?

修改

到目前为止,我尝试使用dirent:

..........
DIR *mydir;
struct stat attr;
mydir = opendir(args[1]);
stat(mydir,&attr);
printf("last modified is... %s" , ctime(&attr.st_mtime));
return 0;

我收到了这个警告:

warning: passing argument 1 of ‘stat’ from incompatible pointer type
/usr/include/sys/stat.h:211: note: expected ‘const char * __restrict__’ but argument is of type ‘struct DIR *’

1 个答案:

答案 0 :(得分:1)

答案是否定的。您无法将DIRstat一起使用。

传递目录名称有什么问题?