之前因为未知原因,无法打开家目录图片目录下的图片,于是我把要拷贝的图片移动到了当前文件夹下
首先,打开图片,以只读(O_RDONLY)模式打开。
再新建一个picture.jpg文件,以读写(O_RDWR)、创建(O_CREAT)、清空(O_TRUNC)方式打开,赋予0755(wrxw-rw-r)权限。
//打开文件
int fd1 = open("./QQ图片20220628202619.jpg", O_RDONLY );
if(fd1 == -1)
{
fprintf(stderr, "line %d文件打开失败", __LINE__);
perror("open");
}
int fd2 = open("./picture.jpg", O_RDWR | O_CREAT | O_TRUNC, 0755);
if(fd2 == -1)
{
fprintf(stderr, "line %d文件打开失败", __LINE__);
perror("open");
}
定义一个字符数组用以存储二进制值,因为read函数不会自动补\0,所以当我们的字符数组大小50时,只能存49个,要手动补一个\0。
//功能部分
ssize_t len;
char str[50]; //一次读取49个字节
while(1)
{
bzero(str, sizeof(str));
len = read(fd1, str, sizeof(str)-1); //少取出一个字节
if(len == 0) //当取出的值数量为0时,退出循环
break;
write(fd2, str, len); //一次存入read取出来的长度(len)的值
}
最后记得关掉文件
//关闭
close(fd1);
close(fd2);
return 0;