IOday3作业

1> 使用文件IO完成对图像的读写操作

#include<myhead.h>

int main(int argc, const char *argv[])
{
	//只读打开图片
	int fd=-1;
	if((fd = open("./R-C.bmp",O_RDWR))==-1)
	{
		perror("open");
		return -1;
	}

	//向后便宜两个字节找到大小的起始地址
	lseek(fd,2,SEEK_SET);

	//计算图片大小
	ssize_t bmpsize=0;
	bmpsize=lseek(fd,0,SEEK_END);
	//bmpsize=read(fd,&bmpsize,sizeof(char));
	printf("图片大小为:%ld\n",bmpsize);

	//再次偏移48字节到图像位置
	lseek(fd,54,SEEK_SET);

	//定义颜色
	unsigned char col[3]={255,255,255};
	for(int i=0;i<400;i++)
	{
		for(int j=0;j<1200;j++)
		{
			write(fd,col,sizeof(col));
		}
	}

	
	//关闭图片
	close(fd);
	
	return 0;
}

效果图:

2> 使用stat函数实现 ls -l 指令功能

#include<myhead.h>

int main(int argc, const char *argv[])
{
	if(argc != 2)
	{
		printf("终端输入有误!\n");
		return -1;
	}
	/*
	struct stat* p=NULL;
	if(stat(argv[1],p)==-1)
	{
		perror("stat");
		return -1;
	}
	*/
	struct stat st;
	if(stat(argv[1],&st)==-1)
	{
		perror("stat");
		return -1;
	}
	//判断文件类型
	switch(st.st_mode & S_IFMT)
	{
	case S_IFSOCK:printf("套接字文件 \n");break;
	case S_IFLNK:printf("链接文件 \n");break;
	case S_IFREG:printf("普通文件 \n");break;
	case S_IFBLK:printf("块设备文件 \n");break;
	case S_IFDIR:printf("目录文件 \n");break;
	case S_IFCHR:printf("字符设备文件 \n");break;
	case S_IFIFO:printf("管道文件 \n");break;
	default:break;
	}
	//权限
	
	//struct tm* tn=localtime(st.st_atim);
	long tn=st.st_atime;
	struct tm* tt=localtime(&tn);
	struct passwd * user=getpwuid(st.st_uid);
	printf("用户名%s\n",user->pw_name);
	printf("用户组名%s\n",user->pw_name);
	printf("文件权限是:%#o \n",st.st_mode & 0777);
	printf("硬链接数目为%ld\n",st.st_nlink);
	printf("用户名ID:%d\n",st.st_uid);
	printf("用户组ID:%d\n",st.st_gid);
	printf("文件大小:%ld\n",st.st_size);
	printf("%02d  %02d %02d:%02d\n",tt->tm_mon+1,tt->tm_mday,tt->tm_hour,tt->tm_min);
	printf("文件名:%s\n",argv[1]);




	return 0;
}

效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值