Buenos dias
El comando FOpen() abre el archivo. Nada mas.
Fseek() posiciona el puntero de lectura.
Dentro de tu bucle no cambias el puntero con otro FSeek()
Como FRead() te devuelve el numero de bytes ledidos, yo comprobaría antes de escribir si cBuffer tiene contenido.
Saludos