For what will work under windows, you can do something like this:
FILE* pFileIn = fopen( "filenameIn", "rb" );
FILE* pFileOut = fopen( "filenameOut", "w+b" );
fseek( pFileIn, -10, SEEK_END );
long length = ftell( pFile );
long blockSize = 16384;
void* pBlock = malloc( blockSize );
long dataLeft = length;
while( dataLeft > 0 )
{
long toCopy = (dataLeft > blockSize) ? blockSize : dataLeft;
fread( pBlock, toCopy, 1, pFileIn );
fwrite( pBlock, toCopy, 1, pFileOut );
dataLef -= toCopy;
}
free( pBlock );
fclose( pFileIn );
fclose( pFileOut );
source
share