欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}




效果图如下:
Linux下C语言实现图片拷贝