【发布时间】:2015-10-20 10:14:15
【问题描述】:
我正在尝试打印文件的大小和上次访问、上次修改和上次更改的时间。但是我在终端中遇到错误。它表示 buf.st_size 的返回值的类型是 '__off_t' 类型,而 buf.st_atime、buf.st_mtime 和 buf.st_ctime 的返回值的类型是 '__time_t'。
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
struct stat buf;
if(argc==2){
stat(argv[1],&buf);
if(S_ISDIR(buf.st_mode))
printf("It's a directoy.\n");
else if(S_ISREG(buf.st_mode))
printf("It's a file.\n");
else
printf("It's other.\n");
printf("User ID: %d.\nGroup ID: %d.\n",buf.st_uid,buf.st_gid);
printf("Size in bytes: %zd .\n",buf.st_size);
printf("Last access: %s.\nLast modification: %s.\nLast change: %d.\n",buf.st_atime,buf.st_mtime,buf.st_ctime);
exit(0);
}
printf("No argument was given.\n");
}
【问题讨论】:
-
您也没有检查
stat()调用是否成功。 -
@AndrewHenle 检查 stat() 调用是否成功是什么意思?
标签: c file printf file-structure