IO DAY3

 IO DAY3_第1张图片

 IO DAY3_第2张图片

 

1. 用read函数完成文件大小计算

#include
#include
#include
#include
#include
#include
#include
int main(int argc, const char *argv[])
{
	int fd=open("file_io.c",O_RDONLY);
	if(fd<0){
		ERR("open");
		return -1;
	}
	char p[128]="";
	size_t bc=0;
	while(1){
		bzero(p,sizeof(p));
		size_t res=0;
		res=read(fd,p,sizeof(p));
		bc+=res;
		printf("%ld\n",res);

		if(0==res||-1==res){
			break;
		}

	}
	printf("%ld\n",bc);
	return 0;
}

 2.文件权限提取修改成循环方式

#include
#include
#include
#include
#include
#include
#include
void get_filePermission(mode_t m){
	
	for(int i=0, n=0400;i<9;i++,n>>=1){
		if((0==i||3==i||6==i)&&(m&n)!=0){
			putchar('r');
		}else if((1==i||4==i||7==i)&&(m&n)!=0){
			putchar('w');
		}else if((2==i||5==i||8==i)&&(m&n)!=0){
			putchar('x');
		}
		else{
			putchar('-');
		}
	}
/*
	if((m& 0400)!=0)
		putchar('r');
	else
		putchar('-');
	if((m& 0200)!=0)
		putchar('w');
	else
		putchar('-');
	if((m& 0100)!=0)
		putchar('x');
	else
		putchar('-');

	if((m& 0400)!=0)
		putchar('r');
	else
		putchar('-');
	if((m& 0200)!=0)
		putchar('w');
	else
		putchar('-');
	if((m& 0100)!=0)
		putchar('x');
	else
		putchar('-');

	if((m& 0400)!=0)
		putchar('r');
	else
		putchar('-');
	if((m& 0200)!=0)
		putchar('w');
	else
		putchar('-');
	if((m& 0100)!=0)
		putchar('x');
	else
		putchar('-');
*/
}

int main(int argc, const char *argv[])
{
	struct stat buf;
	if(stat("file_io.c",&buf)<0){
		ERR("stat");
		return -1;
	}

	printf("mode:0%o\n",buf.st_mode);
	get_filePermission(buf.st_mode);

	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);
	printf("time:%ld\n",buf.st_ctime);
	return 0;
}

你可能感兴趣的:(算法)