目录
使用文件IO完成对图像的读写操作
#include <head.h>
int main(int argc, const char *argv[])
{
// 使用文件IO完成对图像的读写操作
int fd=-1;
if((fd=open("./dog.bmp",O_RDWR))==-1){
perror("open error");
return -1;
}
//读取图片的大小
lseek(fd,2,SEEK_SET);
int size =0;
read(fd,&size,sizeof(size));
printf("%d\n",size);
lseek(fd, 54,SEEK_SET); //将光标定位到图像内容
unsigned char color[3] = {0, 0, 0}; //定义一个颜色,黑色
for(int i=0; i<80; i++){
for(int j=0; j<1000; j++){
int res = write(fd, color, sizeof(color)); //将颜色写入图片中
}
}
close(fd);//关闭文件
return 0;
}
使用stat函数实现 ls -l 指令功能
#include <head.h>
int main(int argc, const char *argv[])
{
//使用stat函数实现 ls -l 指令功能
//判断外部传参的个数
if(argc != 2)
{
perror("error");
return -1;
}
//定义文件状态结构体变量,用于返回文件信息
struct stat st;
//调用函数,获取给定的文件状态
if(stat(argv[1], &st) == -1)
{
perror("stat error");
return -1;
}
//打印文件类型
switch(st.st_mode&S_IFMT)
{
case S_IFSOCK: printf("s"); break;
case S_IFLNK: printf("l"); break;
case S_IFREG: printf("-"); break;
case S_IFBLK: printf("b"); break;
case S_IFDIR: printf("d"); break;
case S_IFCHR: printf("c"); break;
case S_IFIFO: printf("p"); break;
}
//打印用户权限
(st.st_mode & S_IRUSR) ?printf("r") : printf("-");
(st.st_mode & S_IWUSR) ?printf("w") : printf("-");
(st.st_mode & S_IXUSR) ?printf("x") : printf("-");
//打印用户所属组权限
(st.st_mode & S_IRGRP) ?printf("r") : printf("-");
(st.st_mode & S_IWGRP) ?printf("w") : printf("-");
(st.st_mode & S_IXGRP) ?printf("x") : printf("-");
//打印其他用户权限
(st.st_mode & S_IROTH) ?printf("r") : printf("-");
(st.st_mode & S_IWOTH) ?printf("w") : printf("-");
(st.st_mode & S_IXOTH) ?printf("x") : printf("-");
printf(" %ld ",st.st_nlink); //文件硬链接数
printf("%d ",st.st_uid); //我不会打印文件所属用户 只会打印用户ID
printf("%d ",st.st_gid); //我不会打印文件所属组 只会打印组ID
printf("%8ld ", st.st_size); //文件大小
//将得到的秒数分解成时间结构体
struct tm *tp= localtime(&st.st_mtim);
printf("%d ",tp->tm_mon+1); //月份
printf("%d ",tp->tm_mday); //天数
printf("%2d:%2d ",tp->tm_hour,tp->tm_min); //打印时和分
printf("%s ",argv[1]); //打印文件名
printf("\n");
return 0;
}