Fammi capire, hai un file "raw" (cioè si intende un file non in un formato specifico/standard, senza intestazioni o altro) composto da 320 x 240 pixel in formato RGB.
Il file è quindi una sequenza di byte: RGBRGBRGBRGB.......
Tu vuoi creare 3 file separati con le singole componenti, quindi RRRRR... poi un altro file GGGG..... ecc....
Giusto?
Se così, non capisco la necessità di tutte quelle fopen/fread.
- Alloca una area di memoria di 320*240*3 byte
- Carica tutto il file in memoria in questa area
- Alloca una area di memoria di 320*240 byte
- Per ognuna delle tre componenti sposti tutti i relativi byte dalla prima area alla seconda e la scrivi sul file.
Non è l'unica soluzione. Si tratta solo di stabilire "quanto" tenere in memoria. Si potrebbe gestire la cosa "a righe" o a blocchi di N pixel.