要求:输入文件名,输出处理前文件的最后访问/修改时间和处理后的最后访问/修改时间。
知识点:int utime(const char * pathname, const struct utimbuf * times);
#include <utime.h >
times: 结构体struct utimbuf变量。
struct utimbuf结构体如下:
struct utimbuf
{
time_t actime; // 表示文件访问时间
time_t modtime; // 表示文件修改时间
}
当times是空指针时,文件的访问时间和修改时间都被设置为当前时间。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<errno.h>
#include<sys/types.h>
#include<time.h>
#include<utime.h>
#include<sys/stat.h>
int main(int argc,char *argv[])
{
struct stat buf;
int res;
if(argc!=2)
{
perror("参数不正确!正确格式:./main filename");
exit(1);
}
res=stat(argv[1],&buf);
if(res<0)
{
perror("stat error");
exit(1);
}
printf("处理前:\n");
printf("最后访问时间:%s\n",ctime(&buf.st_atime));
printf("最后修改时间:%s\n",ctime(&buf.st_mtime));
utime(argv[1],NULL);
res=stat(argv[1],&buf);
if(res<0)
{
perror("stat error");
exit(1);
}
printf("处理后:\n");
printf("最后访问时间:%s\n",ctime(&buf.st_atime));
printf("最后修改时间:%s\n",ctime(&buf.st_mtime));
}