いくつかの小さなファイルを 1 つの大きなファイルにコンパイルしています。
各小さなファイルが特定の粒度、私の場合は 4096 で始まるようにしようとしています。
したがって、各ファイル間のギャップを埋めています。
それを行うために私が使用した
//Have a look at the current file size
unsigned long iStart=ftell(outfile);
//Calculate how many bytes we have to add to fill the gap to fulfill the granularity
unsigned long iBytesToWrite=iStart % 4096;
//write some empty bytes to fill the gap
vector <unsigned char>nBytes;
nBytes.resize(iBytesToWrite+1);
fwrite(&nBytes[0],iBytesToWrite,1,outfile);
//Now have a look at the file size again
iStart=ftell(outfile);
//And check granularity
unsigned long iCheck=iStart % 4096;
if (iCheck!=0)
{
DebugBreak();
}
ただし、iCheck は返します
iCheck = 3503
0になると予想していました。
誰かが私の間違いを見ますか?