Linux下C语言实现图片拷贝
程序员文章站
2022-07-15 09:46:49
...
最近学校的项目实训要求在Linux下开发一个多人聊天系统,其中一个小功能是实现图片发送与接收,前提自然是能实现图片的拷贝了。贴出代码和一些项目资料记录一下自己的学习历程。
图片拷贝代码:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
//#include <string.h>
int main(void)
{
int fd = open("12.jpg", O_RDONLY); //打开源文件 只读
int fd1 = open("work.jpg", O_CREAT|O_WRONLY, 0777); //创建目标文件 只写
int ret = 0;
if(fd < 0)
{
perror("open");
return -1;
}
if(fd1 < 0)
{
perror("open");
return -1;
}
while(1)
{
char buf[512] = {0};
ret = read(fd, buf, sizeof(buf));
if(ret < 0)
{
perror("read");
return -1;
}
if(ret == 0)
{
break;
}
//ret = write(fd1, buf, strlen(buf)); //文本拷贝
//ret = write(fd1, buf, sizeof(buf)); //图片会变大
ret = write(fd1, buf, ret); //ret代表read所读取到的(实际)字节数
if(ret < 0)
{
perror("write");
return -1;
}
}
ret = close(fd);
if(ret < 0)
{
perror("close");
return -1;
}
ret = close(fd1);
if(ret < 0)
{
perror("close");
return -1;
}
return 0;
}
效果图如下: