将目录作为参数传递并显示其最后修改日期
Passing a dir as argument and show its last modified date
好的,所以我在考虑一个程序来显示我的文件夹或文件的最后修改时间;我成功了,但我只传递了路径作为参数。
#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 而不是字符路径来做到这一点。
类似于:
.........
DIR *mydir;
struct dirent *dir;
dir = opendir(args[1]);
注意:但是我发现我之前使用的统计函数(路径作为参数)有这些参数:
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 *’
答案是否定的。您不能将 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 而不是字符路径来做到这一点。 类似于:
.........
DIR *mydir;
struct dirent *dir;
dir = opendir(args[1]);
注意:但是我发现我之前使用的统计函数(路径作为参数)有这些参数:
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 *’
答案是否定的。您不能将 DIR
与 stat
.
传递目录名有什么问题?