关于LINUX C编程上的read write函数,你懂吗?该如何解决

关于LINUX C编程上的read write函数,你懂吗?
本人在编写一个很简单的程序,就是把一个mp3文件,也就是二进制文件复制给另一个时,只复制了200多k而已,而且打不开,而原来的文件有4M多,我用的是read write函数,我知道用fread和fwrite方便,不过我想试一下用更加底层的read write函数,求大神说明一下为什么会出现复制不完整?
这是我的代码:
C/C++ code

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/stat.h>

#define SIZE 100
char buf[SIZE];

int main()
{
    int src=open("in.mp3",O_RDONLY);
    if(src<0)
    {
        perror("open src");
        exit(1);
    }
    int des=open("out.mp3",O_WRONLY|O_CREAT,S_IRWXU);
    if(des<0)
    {
        perror("open des");
        exit(1);
    }
    int count;
    while((count=read(src,buf,sizeof(buf)))>0)
    {

        if(write(des,buf,count)<count)
        {
        perror("write error\n");
        close(src);
        close(des);
        exit(1);
        }
    }
    close(src);
    close(des);
}



------解决方案--------------------
探讨

引用:

因为c库里面包含了这两个函数


拜托先去查一查C99,看有没有包含这两个函数?是fread汗fwrite吧?