IOday4

作业:输出文件属性

#include<myhead.h>
#include<dirent.h>
 
int main(int argc, const char *argv[])
{
//定义一个目录文件指针
DIR *dp;
//判断目录是否打开成功
if((dp=opendir("./"))==NULL)
{
perror("open dir");
return -1;
}

//定义dirent结构体指针
struct dirent *tp;
//读取目录
while((tp=readdir(dp))!=NULL)
{
struct stat sb;
char s[20]="./";
strcat(s,tp->d_name);
//获取目录文件
stat(s,&sb);

//printf("%-8s\t%#o\t%d\t%ld\t\n",tp->d_name,tp->d_type,tp->d_reclen,tp->d_ino);
char quanxian[10]={'\0'};//存权限数列的字符串
	unsigned long qx = sb.st_mode&0777;//无符号long型变量存权限
	for(int i = 0;i<9;i++){//权限序列长度为9循环9次
		if(qx & 0001){//取出最后一位 是1进入if
			if(i%3==1)
				quanxian[i] = 'x';
			else if(i%3==2)
				quanxian[i] = 'w';
			else
				quanxian[i] = 'r';
		}
		else //是0赋值为‘-’
			quanxian[i] = '-';
		//qx右移1位
		qx=qx>>1;
	}
	//输出文件权限
	printf("%s",quanxian);
	//输出文件类型,大小,文件名
printf(" %#-5o\t\t%ld\t%ld\t%s\n",sb.st_mode&S_IFMT, /* sb.st_mode&0777*/ sb.st_size, sb.st_ino,tp->d_name);
}
//关闭目录
closedir(dp);
	return 0;
}

输出结果

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值