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;
}
效果图: