allora con questo codice credo di rendere bene l'idea su quello che voglio fare.

codice:
#define WIN32_LEAN_AND_MEAN
#define _CRT_SECURE_NO_WARNINGS

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

const LPSTR strFileIn = TEXT("C:\\Users\\giangaetano\\Desktop\\testcase.wav");
const LPSTR strFileOut = TEXT("C:\\Users\\giangaetano\\Desktop\\marameo.wav");

int main()
{
	DWORD dwBuffer    = 100000;
	DWORD dwChunk     = 2304;
	LPSTR header      = new char[44];
	PBYTE pWAVBuffer  = new BYTE[dwBuffer];
	PBYTE pWAVChunk   = new BYTE[dwChunk];
	FILE* pFileIn     = NULL;
	DWORD dwRead      = 0;

	// Slurp file: pWAVBuffer contains all the data
	pFileIn = fopen( strFileIn, "rb" );
	if (pFileIn == NULL)
	{
		printf("cannot open file!\n");
		return -1;
	}
	dwRead = fread(header, 1, 44, pFileIn);
	dwRead = fread(pWAVBuffer, sizeof(BYTE), dwBuffer, pFileIn);
	fclose(pFileIn);
	printf("%d\n", dwRead);

	// Loop thru data:
	DWORD dwLoopExit  = (DWORD)ceil((double)dwBuffer/dwChunk);
	DWORD dwChunkSeek = 0;
	DWORD dwLoop      = 0;

	FILE* pFileOut;
	pFileOut = fopen( strFileOut, "wb" );
	fwrite(header, 1, 44, pFileOut);

	while (dwLoop < dwLoopExit)
	{
		memcpy(pWAVChunk, pWAVBuffer + dwChunkSeek, dwChunk);
		dwChunkSeek += dwChunk;
		++dwLoop;
		fwrite(pWAVChunk, sizeof(BYTE), dwChunk, pFileOut);
		printf("%d\n", dwChunkSeek);
	}
	fclose(pFileOut);

	delete[] header;
	delete[] pWAVBuffer;
	delete[] pWAVChunk;

	system("pause");
	return 0;
}
Il codice serve solo a scopo didattico. Leggo in memoria l'intero contenuto di un file e lo riscrivo a chunks di 2304 bytes in un'altro file...il File di origine pesa 100040 Bytes (ma i primi 44 bytes sono di header, non mi servono)

Calcolando che lo voglio salvare in un unico file man mano a pezzetti di 2304 bytes l'uno, dovrò fare ceil((double)100000/2304) = 44 cicli while, di qui 43 sono chunks pieni mentre l'ultimo e nullpadded in parte...come posso evitare il nulpadded e salvare solo i testanti 928 bytes??