作业:1.补全显示文件权限函数;2.利用localtime重新显示时间格式
h1.c
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/stat.h>
#include<time.h>
//修改文件权限为可视权限
char *get_filePermission(mode_t m,char marr[])
{
char per[]="rwx";
for(int i=0;i<9;i++)
{
if((m& (0400>>i))==0)
{
marr[i]='-';
continue;
}
//能运行到当前位置,则代表结果不为0,则需要打印r wx
marr[i]=per[i%3];
}
//第三种 传参返回数组首地址,函数返回值必须变成指针类型
return marr;
}
int main(int argc, const char *argv[])
{
if(argc<2)
{
fprintf(stderr,"请在命令行输入文件名\n");
return -1;
}
struct stat buf;
if(stat(argv[1],&buf)<0)
{
perror("stat");
return -1;
}
//文件类型以及文件权限
char marr[10]="";
printf("mode:%o\n",buf.st_mode);
get_filePermission(buf.st_mode,marr);
printf("%s\n",marr);
//文件硬链接数
printf("link:%ld\n",buf.st_nlink);
//文件所属用户
printf("uid:%d\n",buf.st_uid);
printf("gid:%d\n",buf.st_gid);
//文件大小
printf("size:%ld\n",buf.st_size);
//文件修改的时间
struct tm* info;
info=localtime(&buf.st_ctime);
printf("%d月 %d %02d:%02d\n",info->tm_mon+1,info->tm_mday,\
info->tm_hour,info->tm_min);
return 0;
}
运行结果截图:
day 3思维导图