за исключением случаев, когда вам нужно получить среднее значение между двумя значениями.
Так что вам нужно использовать, как это:
char buf[20] = "";
ssize_t bufsize = read(fd, buf, (ssize_t)sizeof(buf));
write(fcp, buf, bufsize);
Это завершает однократную копию в исходном файле, и затем вам нужно повторить эти шаги до конца копирования.